mirror of https://github.com/zulip/zulip.git
API: Add unsubscribe function.
(imported from commit 6dc55e9030770500770ce3921a4e77499d64f2d6)
This commit is contained in:
parent
312db82f2b
commit
6026c80de6
|
@ -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:
|
||||
|
|
|
@ -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())
|
|
@ -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'),
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue