From 025a35cef062ecb08303b96c56727e9b7758856a Mon Sep 17 00:00:00 2001 From: Ashish Date: Wed, 23 Mar 2016 12:17:50 +0530 Subject: [PATCH] Add API example for fetching historical messages. Fixes: #269. --- MANIFEST.in | 1 + examples/recent-messages | 61 ++++++++++++++++++++++++++++++++++++++++ setup.py | 2 +- 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100755 examples/recent-messages diff --git a/MANIFEST.in b/MANIFEST.in index 2b1cf4a..fca2900 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -8,3 +8,4 @@ include examples/unsubscribe include examples/list-members include examples/list-subscriptions include examples/print-messages +include examples/recent-messages diff --git a/examples/recent-messages b/examples/recent-messages new file mode 100755 index 0000000..869f6a1 --- /dev/null +++ b/examples/recent-messages @@ -0,0 +1,61 @@ +#!/usr/bin/env python2.7 +# -*- coding: utf-8 -*- + +# Copyright © 2012 Zulip, Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +from __future__ import print_function +import sys +import os +import json +import optparse + +usage = """recent-messages [options] --count= --user= --api-key= + +Prints out last count messages recieved by the indicated bot or user + +Example: recent-messages --count=101 --user=username@example.com --api-key=a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5 + +You can omit --user and --api-key arguments if you have a properly set up ~/.zuliprc +""" +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +import zulip + +parser = optparse.OptionParser(usage=usage) +parser.add_option('--count', default=100) +parser.add_option_group(zulip.generate_option_group(parser)) +(options, args) = parser.parse_args() + +client = zulip.init_from_options(options) + +req = { + 'narrow': [["stream", "Denmark"]], + 'num_before': options.count, + 'num_after': 0, + 'anchor': 1000000000, + 'apply_markdown': False +} + +old_messages = client.do_api_query(req, zulip.API_VERSTRING + 'messages', method='GET') +if 'messages' in old_messages: + for message in old_messages['messages']: + print(json.dumps(message, indent=4)) +else: + print([]) diff --git a/setup.py b/setup.py index ae2b69d..089b7b3 100644 --- a/setup.py +++ b/setup.py @@ -40,7 +40,7 @@ package_info = dict( data_files=[('share/zulip/examples', ["examples/zuliprc", "examples/send-message", "examples/subscribe", "examples/get-public-streams", "examples/unsubscribe", "examples/list-members", "examples/list-subscriptions", - "examples/print-messages"])] + \ + "examples/print-messages", "examples/recent-messages"])] + \ list(recur_expand('share/zulip', 'integrations/')), scripts=["bin/zulip-send"], )