Add API queries to show public streams and the user's subscriptions.

(imported from commit 5f24e35a9bdd1e40406e2acb0c3713a6517d139b)
This commit is contained in:
Tim Abbott
2012-10-11 13:31:21 -04:00
parent adf75d48e1
commit 83f494b1a4
5 changed files with 89 additions and 0 deletions

View File

@@ -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:

View 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()

View 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()

View File

@@ -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'),

View File

@@ -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))