Skip to content

Commit 1cf3724

Browse files
committed
api: Encoded certain api endpoint parameters.
Rectified the parameters in certain api endpoints to , take up default parameters rather than a dictionary. Affected endpoints : GET get_profile POST update_presence GET get_users GET get_members GET list_subscriptions PATCH mute_topic POST render_message POST create_user PUT update_storage GET get_storage POST set_typing_status As discussed within zulip/zulip#16698
1 parent f2d80c6 commit 1cf3724

File tree

3 files changed

+50
-44
lines changed

3 files changed

+50
-44
lines changed

zulip/zulip/__init__.py

+39-33
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,12 @@ def get_default_config_filename() -> Optional[str]:
266266
" mv ~/.humbugrc ~/.zuliprc\n")
267267
return config_file
268268

269+
def deprecated_request(request: Optional[Dict[str, Any]]) -> Dict[str, Any]:
270+
if request is not None:
271+
logger.warning("Passing parameters as a dictionary will be removed in future versions.")
272+
return request
273+
return {}
274+
269275
def validate_boolean_field(field: Optional[Text]) -> Union[bool, None]:
270276
if not isinstance(field, str):
271277
return None
@@ -1072,7 +1078,7 @@ def deregister(self, queue_id: str, timeout: Optional[float] = None) -> Dict[str
10721078
timeout=timeout,
10731079
)
10741080

1075-
def get_profile(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1081+
def get_profile(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
10761082
'''
10771083
Example usage:
10781084
@@ -1082,7 +1088,7 @@ def get_profile(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any
10821088
return self.call_endpoint(
10831089
url='users/me',
10841090
method='GET',
1085-
request=request,
1091+
request={**deprecated_request(request), **kwargs},
10861092
)
10871093

10881094
def get_user_presence(self, email: str) -> Dict[str, Any]:
@@ -1109,21 +1115,21 @@ def get_realm_presence(self) -> Dict[str, Any]:
11091115
method='GET',
11101116
)
11111117

1112-
def update_presence(self, request: Dict[str, Any]) -> Dict[str, Any]:
1118+
def update_presence(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
11131119
'''
11141120
Example usage:
11151121
1116-
>>> client.update_presence({
1122+
>>> client.update_presence(
11171123
status='active',
11181124
ping_only=False,
11191125
new_user_input=False,
1120-
})
1126+
)
11211127
{'result': 'success', 'server_timestamp': 1333649180.7073195, 'presences': {'[email protected]': { ... }}, 'msg': ''}
11221128
'''
11231129
return self.call_endpoint(
11241130
url='users/me/presence',
11251131
method='POST',
1126-
request=request,
1132+
request={**deprecated_request(request), **kwargs},
11271133
)
11281134

11291135
def get_streams(self, **request: Any) -> Dict[str, Any]:
@@ -1228,22 +1234,22 @@ def update_user_by_id(self, user_id: int, **request: Any) -> Dict[str, Any]:
12281234
request=request
12291235
)
12301236

1231-
def get_users(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1237+
def get_users(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
12321238
'''
12331239
See examples/list-users for example usage.
12341240
'''
12351241
return self.call_endpoint(
12361242
url='users',
12371243
method='GET',
1238-
request=request,
1244+
request={**deprecated_request(request), **kwargs},
12391245
)
12401246

1241-
def get_members(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1247+
def get_members(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
12421248
# This exists for backwards-compatibility; we renamed this
12431249
# function get_users for consistency with the rest of the API.
12441250
# Later, we may want to add a warning for clients using this
12451251
# legacy name.
1246-
return self.get_users(request=request)
1252+
return self.get_users(request=request, **kwargs)
12471253

12481254
def get_alert_words(self) -> Dict[str, Any]:
12491255
'''
@@ -1278,14 +1284,14 @@ def remove_alert_words(self, alert_words: List[str]) -> Dict[str, Any]:
12781284
}
12791285
)
12801286

1281-
def list_subscriptions(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1287+
def list_subscriptions(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
12821288
'''
12831289
See examples/list-subscriptions for example usage.
12841290
'''
12851291
return self.call_endpoint(
12861292
url='users/me/subscriptions',
12871293
method='GET',
1288-
request=request,
1294+
request={**deprecated_request(request), **kwargs},
12891295
)
12901296

12911297
def add_subscriptions(self, streams: Iterable[Dict[str, Any]], **kwargs: Any) -> Dict[str, Any]:
@@ -1329,14 +1335,14 @@ def get_subscription_status(self, user_id: int, stream_id: int) -> Dict[str, Any
13291335
method='GET',
13301336
)
13311337

1332-
def mute_topic(self, request: Dict[str, Any]) -> Dict[str, Any]:
1338+
def mute_topic(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
13331339
'''
13341340
See examples/mute-topic for example usage.
13351341
'''
13361342
return self.call_endpoint(
13371343
url='users/me/subscriptions/muted_topics',
13381344
method='PATCH',
1339-
request=request
1345+
request={**deprecated_request(request), **kwargs},
13401346
)
13411347

13421348
def update_subscription_settings(self, subscription_data: List[Dict[str, Any]]) -> Dict[str, Any]:
@@ -1486,72 +1492,72 @@ def get_subscribers(self, **request: Any) -> Dict[str, Any]:
14861492
request=request,
14871493
)
14881494

1489-
def render_message(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1495+
def render_message(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
14901496
'''
14911497
Example usage:
14921498
1493-
>>> client.render_message(request=dict(content='foo **bar**'))
1499+
>>> client.render_message(content='foo **bar**')
14941500
{u'msg': u'', u'rendered': u'<p>foo <strong>bar</strong></p>', u'result': u'success'}
14951501
'''
14961502
return self.call_endpoint(
14971503
url='messages/render',
14981504
method='POST',
1499-
request=request,
1505+
request={**deprecated_request(request), **kwargs},
15001506
)
15011507

1502-
def create_user(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1508+
def create_user(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
15031509
'''
15041510
See examples/create-user for example usage.
15051511
'''
15061512
return self.call_endpoint(
15071513
method='POST',
15081514
url='users',
1509-
request=request,
1515+
request={**deprecated_request(request), **kwargs},
15101516
)
15111517

1512-
def update_storage(self, request: Dict[str, Any]) -> Dict[str, Any]:
1518+
def update_storage(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
15131519
'''
15141520
Example usage:
15151521
1516-
>>> client.update_storage({'storage': {"entry 1": "value 1", "entry 2": "value 2", "entry 3": "value 3"}})
1517-
>>> client.get_storage({'keys': ["entry 1", "entry 3"]})
1522+
>>> client.update_storage(storage = {"entry 1": "value 1", "entry 2": "value 2", "entry 3": "value 3"})
1523+
>>> client.get_storage(keys = ["entry 1", "entry 3"])
15181524
{'result': 'success', 'storage': {'entry 1': 'value 1', 'entry 3': 'value 3'}, 'msg': ''}
15191525
'''
15201526
return self.call_endpoint(
15211527
url='bot_storage',
15221528
method='PUT',
1523-
request=request,
1529+
request={**deprecated_request(request), **kwargs},
15241530
)
15251531

1526-
def get_storage(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1532+
def get_storage(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
15271533
'''
15281534
Example usage:
15291535
1530-
>>> client.update_storage({'storage': {"entry 1": "value 1", "entry 2": "value 2", "entry 3": "value 3"}})
1536+
>>> client.update_storage(storage = {"entry 1": "value 1", "entry 2": "value 2", "entry 3": "value 3"})
15311537
>>> client.get_storage()
15321538
{'result': 'success', 'storage': {"entry 1": "value 1", "entry 2": "value 2", "entry 3": "value 3"}, 'msg': ''}
1533-
>>> client.get_storage({'keys': ["entry 1", "entry 3"]})
1539+
>>> client.get_storage(keys = ["entry 1", "entry 3"])
15341540
{'result': 'success', 'storage': {'entry 1': 'value 1', 'entry 3': 'value 3'}, 'msg': ''}
15351541
'''
15361542
return self.call_endpoint(
15371543
url='bot_storage',
15381544
method='GET',
1539-
request=request,
1545+
request={**deprecated_request(request), **kwargs}
15401546
)
15411547

1542-
def set_typing_status(self, request: Dict[str, Any]) -> Dict[str, Any]:
1548+
def set_typing_status(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
15431549
'''
15441550
Example usage:
1545-
>>> client.set_typing_status({
1546-
'op': 'start',
1547-
'to': [9, 10],
1548-
})
1551+
>>> client.set_typing_status(
1552+
op = 'start',
1553+
to = [9, 10],
1554+
)
15491555
{'result': 'success', 'msg': ''}
15501556
'''
15511557
return self.call_endpoint(
15521558
url='typing',
15531559
method='POST',
1554-
request=request
1560+
request={**deprecated_request(request), **kwargs},
15551561
)
15561562

15571563
def move_topic(

zulip/zulip/examples/create-user

+6-6
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ options = parser.parse_args()
2323

2424
client = zulip.init_from_options(options)
2525

26-
print(client.create_user({
27-
'email': options.new_email,
28-
'password': options.new_password,
29-
'full_name': options.new_full_name,
30-
'short_name': options.new_short_name
31-
}))
26+
print(client.create_user(
27+
email = options.new_email,
28+
password = options.new_password,
29+
full_name = options.new_full_name,
30+
short_name = options.new_short_name
31+
))

zulip/zulip/examples/mute-topic

+5-5
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ OPERATIONS = {
2323
'unmute': 'remove'
2424
}
2525

26-
print(client.mute_topic({
27-
'op': OPERATIONS[options.op],
28-
'stream': options.stream,
29-
'topic': options.topic
30-
}))
26+
print(client.mute_topic(
27+
op = OPERATIONS[options.op],
28+
stream = options.stream,
29+
topic = options.topic
30+
))

0 commit comments

Comments
 (0)