mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
Add API queries to show public streams and the user's subscriptions.
(imported from commit 5f24e35a9bdd1e40406e2acb0c3713a6517d139b)
This commit is contained in:
@@ -50,6 +50,12 @@ class HumbugAPI():
|
||||
def get_messages(self, request = {}):
|
||||
return self.do_api_query(request, "/api/v1/get_messages")
|
||||
|
||||
def get_public_streams(self, request = {}):
|
||||
return self.do_api_query(request, "/api/v1/get_public_streams")
|
||||
|
||||
def get_subscriptions(self, request = {}):
|
||||
return self.do_api_query(request, "/api/v1/get_subscriptions")
|
||||
|
||||
def call_on_each_message(self, callback, options = {}):
|
||||
max_message_id = None
|
||||
while True:
|
||||
|
||||
33
api/examples/get-public-streams
Normal file
33
api/examples/get-public-streams
Normal file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/python
|
||||
import sys
|
||||
import os
|
||||
import optparse
|
||||
|
||||
usage = """get-public-streams --user=<email address> [options]
|
||||
|
||||
Prints out each message received by the indicated user.
|
||||
|
||||
Example: get-public-streams --user=tabbott@humbughq.com --site=http://127.0.0.1:8000
|
||||
"""
|
||||
parser = optparse.OptionParser(usage=usage)
|
||||
parser.add_option('--site',
|
||||
dest='site',
|
||||
default="https://app.humbughq.com",
|
||||
action='store')
|
||||
parser.add_option('--api-key',
|
||||
dest='api_key',
|
||||
default="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||
action='store')
|
||||
parser.add_option('--user',
|
||||
dest='user',
|
||||
action='store')
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
|
||||
import api.common
|
||||
client = api.common.HumbugAPI(email=options.user,
|
||||
api_key=options.api_key,
|
||||
verbose=True,
|
||||
site=options.site)
|
||||
|
||||
print client.get_public_streams()
|
||||
33
api/examples/get-subscriptions
Normal file
33
api/examples/get-subscriptions
Normal file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/python
|
||||
import sys
|
||||
import os
|
||||
import optparse
|
||||
|
||||
usage = """get-subscriptions --user=<email address> [options]
|
||||
|
||||
Prints out each message received by the indicated user.
|
||||
|
||||
Example: get-subscriptions --user=tabbott@humbughq.com --site=http://127.0.0.1:8000
|
||||
"""
|
||||
parser = optparse.OptionParser(usage=usage)
|
||||
parser.add_option('--site',
|
||||
dest='site',
|
||||
default="https://app.humbughq.com",
|
||||
action='store')
|
||||
parser.add_option('--api-key',
|
||||
dest='api_key',
|
||||
default="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||
action='store')
|
||||
parser.add_option('--user',
|
||||
dest='user',
|
||||
action='store')
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
|
||||
import api.common
|
||||
client = api.common.HumbugAPI(email=options.user,
|
||||
api_key=options.api_key,
|
||||
verbose=True,
|
||||
site=options.site)
|
||||
|
||||
print client.get_subscriptions()
|
||||
@@ -11,6 +11,8 @@ urlpatterns = patterns('',
|
||||
url(r'^update$', 'zephyr.views.update', name='update'),
|
||||
url(r'^get_updates$', 'zephyr.views.get_updates', name='get_updates'),
|
||||
url(r'^api/v1/get_messages$', 'zephyr.views.api_get_messages', name='api_get_messages'),
|
||||
url(r'^api/v1/get_public_streams$', 'zephyr.views.api_get_public_streams', name='api_get_public_streams'),
|
||||
url(r'^api/v1/get_subscriptions$', 'zephyr.views.api_get_subscriptions', name='api_get_subscriptions'),
|
||||
url(r'^api/v1/send_message$', 'zephyr.views.api_send_message', name='api_send_message'),
|
||||
url(r'^send_message/', 'zephyr.views.send_message', name='send_message'),
|
||||
url(r'^accounts/home/', 'zephyr.views.accounts_home', name='accounts_home'),
|
||||
|
||||
@@ -430,12 +430,27 @@ def send_message_backend(request, user_profile, sender):
|
||||
|
||||
return json_success()
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
@require_post
|
||||
@api_key_required
|
||||
def api_get_public_streams(request, user_profile):
|
||||
streams = sorted([stream.name for stream in
|
||||
Stream.objects.filter(realm=user_profile.realm)])
|
||||
return json_success({"streams": streams})
|
||||
|
||||
def gather_subscriptions(user_profile):
|
||||
subscriptions = Subscription.objects.filter(userprofile=user_profile, active=True)
|
||||
# For now, don't display the subscription for your ability to receive personals.
|
||||
return sorted([get_display_recipient(sub.recipient) for sub in subscriptions
|
||||
if sub.recipient.type == Recipient.STREAM])
|
||||
|
||||
@csrf_exempt
|
||||
@require_post
|
||||
@api_key_required
|
||||
def api_get_subscriptions(request, user_profile):
|
||||
return json_success({"streams": gather_subscriptions(user_profile)})
|
||||
|
||||
@login_required
|
||||
def json_list_subscriptions(request):
|
||||
subs = gather_subscriptions(UserProfile.objects.get(user=request.user))
|
||||
|
||||
Reference in New Issue
Block a user