API: Add unsubscribe function.

(imported from commit 6dc55e9030770500770ce3921a4e77499d64f2d6)
This commit is contained in:
Tim Abbott 2012-11-16 14:15:03 -05:00
parent 312db82f2b
commit 6026c80de6
5 changed files with 51 additions and 0 deletions

View File

@ -110,6 +110,10 @@ class HumbugAPI():
request = {'subscriptions': streams}
return self.do_api_query(request, "/api/v1/subscriptions/add")
def remove_subscriptions(self, streams):
request = {'subscriptions': streams}
return self.do_api_query(request, "/api/v1/subscriptions/remove")
def call_on_each_message(self, callback, options = {}):
max_message_id = None
while True:

41
api/examples/unsubscribe Executable file
View File

@ -0,0 +1,41 @@
#!/usr/bin/python
import sys
import os
import optparse
usage = """unsubscribe --user=<email address> [options] --streams=<streams>
Ensures the user is not subscribed to the listed streams.
Example: unsubscribe --user=tabbott@humbughq.com --site=http://127.0.0.1:8000
"""
parser = optparse.OptionParser(usage=usage)
parser.add_option('--site',
dest='site',
default="https://humbughq.com",
action='store')
parser.add_option('--api-key',
dest='api_key',
default="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
action='store')
parser.add_option('--streams',
dest='streams',
default="",
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)
if options.streams == "":
print >>sys.stderr, "Usage:", parser.usage
sys.exit(1)
print client.remove_subscriptions(options.streams.split())

View File

@ -52,6 +52,7 @@ urlpatterns = patterns('',
url(r'^api/v1/get_public_streams$', 'zephyr.views.api_get_public_streams'),
url(r'^api/v1/subscriptions/list$', 'zephyr.views.api_list_subscriptions'),
url(r'^api/v1/subscriptions/add$', 'zephyr.views.api_add_subscriptions'),
url(r'^api/v1/subscriptions/remove$', 'zephyr.views.api_remove_subscriptions'),
url(r'^api/v1/send_message$', 'zephyr.views.api_send_message'),
url(r'^api/v1/update_pointer$', 'zephyr.views.api_update_pointer'),

View File

@ -123,6 +123,7 @@ class PublicURLTest(TestCase):
"/api/v1/get_public_streams",
"/api/v1/subscriptions/list",
"/api/v1/subscriptions/add",
"/api/v1/subscriptions/remove",
"/api/v1/send_message",
"/api/v1/fetch_api_key",
"/json/fetch_api_key",

View File

@ -708,6 +708,10 @@ def api_list_subscriptions(request, user_profile):
def json_list_subscriptions(request, user_profile):
return json_success({"subscriptions": gather_subscriptions(user_profile)})
@authenticated_api_view
def api_remove_subscriptions(request, user_profile):
return remove_subscriptions_backend(request, user_profile)
@authenticated_json_view
def json_remove_subscriptions(request, user_profile):
return remove_subscriptions_backend(request, user_profile)