Skip to content

Commit 7370a8e

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 get_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 70f457f commit 7370a8e

File tree

3 files changed

+52
-44
lines changed

3 files changed

+52
-44
lines changed

zulip/zulip/__init__.py

+41-33
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,14 @@ 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(
272+
"Passing parameters as a dictionary will be removed in future versions."
273+
)
274+
return request
275+
return {}
276+
269277
def validate_boolean_field(field: Optional[Text]) -> Union[bool, None]:
270278
if not isinstance(field, str):
271279
return None
@@ -1072,7 +1080,7 @@ def deregister(self, queue_id: str, timeout: Optional[float] = None) -> Dict[str
10721080
timeout=timeout,
10731081
)
10741082

1075-
def get_profile(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1083+
def get_profile(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
10761084
'''
10771085
Example usage:
10781086
@@ -1082,7 +1090,7 @@ def get_profile(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any
10821090
return self.call_endpoint(
10831091
url='users/me',
10841092
method='GET',
1085-
request=request,
1093+
request={**deprecated_request(request), **kwargs},
10861094
)
10871095

10881096
def get_user_presence(self, email: str) -> Dict[str, Any]:
@@ -1109,21 +1117,21 @@ def get_realm_presence(self) -> Dict[str, Any]:
11091117
method='GET',
11101118
)
11111119

1112-
def update_presence(self, request: Dict[str, Any]) -> Dict[str, Any]:
1120+
def update_presence(self, request: Dict[str, Any] = None, **kwargs: Any) -> Dict[str, Any]:
11131121
'''
11141122
Example usage:
11151123
1116-
>>> client.update_presence({
1124+
>>> client.update_presence(
11171125
status='active',
11181126
ping_only=False,
11191127
new_user_input=False,
1120-
})
1128+
)
11211129
{'result': 'success', 'server_timestamp': 1333649180.7073195, 'presences': {'[email protected]': { ... }}, 'msg': ''}
11221130
'''
11231131
return self.call_endpoint(
11241132
url='users/me/presence',
11251133
method='POST',
1126-
request=request,
1134+
request={**deprecated_request(request), **kwargs},
11271135
)
11281136

11291137
def get_streams(self, **request: Any) -> Dict[str, Any]:
@@ -1228,22 +1236,22 @@ def update_user_by_id(self, user_id: int, **request: Any) -> Dict[str, Any]:
12281236
request=request
12291237
)
12301238

1231-
def get_users(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1239+
def get_users(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
12321240
'''
12331241
See examples/list-users for example usage.
12341242
'''
12351243
return self.call_endpoint(
12361244
url='users',
12371245
method='GET',
1238-
request=request,
1246+
request={**deprecated_request(request), **kwargs},
12391247
)
12401248

1241-
def get_members(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1249+
def get_members(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
12421250
# This exists for backwards-compatibility; we renamed this
12431251
# function get_users for consistency with the rest of the API.
12441252
# Later, we may want to add a warning for clients using this
12451253
# legacy name.
1246-
return self.get_users(request=request)
1254+
return self.get_users(request=request, **kwargs)
12471255

12481256
def get_alert_words(self) -> Dict[str, Any]:
12491257
'''
@@ -1278,20 +1286,20 @@ def remove_alert_words(self, alert_words: List[str]) -> Dict[str, Any]:
12781286
}
12791287
)
12801288

1281-
def get_subscriptions(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1289+
def get_subscriptions(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
12821290
'''
12831291
See examples/get-subscriptions for example usage.
12841292
'''
12851293
return self.call_endpoint(
12861294
url='users/me/subscriptions',
12871295
method='GET',
1288-
request=request,
1296+
request={**deprecated_request(request), **kwargs},
12891297
)
12901298

1291-
def list_subscriptions(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1299+
def list_subscriptions(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
12921300
logger.warning("list_subscriptions() is deprecated."
12931301
" Please use get_subscriptions() instead.")
1294-
return self.get_subscriptions(request)
1302+
return self.get_subscriptions(request, **kwargs)
12951303

12961304
def add_subscriptions(self, streams: Iterable[Dict[str, Any]], **kwargs: Any) -> Dict[str, Any]:
12971305
'''
@@ -1334,14 +1342,14 @@ def get_subscription_status(self, user_id: int, stream_id: int) -> Dict[str, Any
13341342
method='GET',
13351343
)
13361344

1337-
def mute_topic(self, request: Dict[str, Any]) -> Dict[str, Any]:
1345+
def mute_topic(self, request: Dict[str, Any] = None, **kwargs: Any) -> Dict[str, Any]:
13381346
'''
13391347
See examples/mute-topic for example usage.
13401348
'''
13411349
return self.call_endpoint(
13421350
url='users/me/subscriptions/muted_topics',
13431351
method='PATCH',
1344-
request=request
1352+
request={**deprecated_request(request), **kwargs},
13451353
)
13461354

13471355
def update_subscription_settings(self, subscription_data: List[Dict[str, Any]]) -> Dict[str, Any]:
@@ -1491,72 +1499,72 @@ def get_subscribers(self, **request: Any) -> Dict[str, Any]:
14911499
request=request,
14921500
)
14931501

1494-
def render_message(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1502+
def render_message(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
14951503
'''
14961504
Example usage:
14971505
1498-
>>> client.render_message(request=dict(content='foo **bar**'))
1506+
>>> client.render_message(content='foo **bar**')
14991507
{u'msg': u'', u'rendered': u'<p>foo <strong>bar</strong></p>', u'result': u'success'}
15001508
'''
15011509
return self.call_endpoint(
15021510
url='messages/render',
15031511
method='POST',
1504-
request=request,
1512+
request={**deprecated_request(request), **kwargs},
15051513
)
15061514

1507-
def create_user(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1515+
def create_user(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
15081516
'''
15091517
See examples/create-user for example usage.
15101518
'''
15111519
return self.call_endpoint(
15121520
method='POST',
15131521
url='users',
1514-
request=request,
1522+
request={**deprecated_request(request), **kwargs},
15151523
)
15161524

1517-
def update_storage(self, request: Dict[str, Any]) -> Dict[str, Any]:
1525+
def update_storage(self, request: Dict[str, Any] = None, **kwargs: Any) -> Dict[str, Any]:
15181526
'''
15191527
Example usage:
15201528
1521-
>>> client.update_storage({'storage': {"entry 1": "value 1", "entry 2": "value 2", "entry 3": "value 3"}})
1522-
>>> client.get_storage({'keys': ["entry 1", "entry 3"]})
1529+
>>> client.update_storage(storage = {"entry 1": "value 1", "entry 2": "value 2", "entry 3": "value 3"})
1530+
>>> client.get_storage(keys = ["entry 1", "entry 3"])
15231531
{'result': 'success', 'storage': {'entry 1': 'value 1', 'entry 3': 'value 3'}, 'msg': ''}
15241532
'''
15251533
return self.call_endpoint(
15261534
url='bot_storage',
15271535
method='PUT',
1528-
request=request,
1536+
request={**deprecated_request(request), **kwargs},
15291537
)
15301538

1531-
def get_storage(self, request: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
1539+
def get_storage(self, request: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Dict[str, Any]:
15321540
'''
15331541
Example usage:
15341542
1535-
>>> client.update_storage({'storage': {"entry 1": "value 1", "entry 2": "value 2", "entry 3": "value 3"}})
1543+
>>> client.update_storage(storage = {"entry 1": "value 1", "entry 2": "value 2", "entry 3": "value 3"})
15361544
>>> client.get_storage()
15371545
{'result': 'success', 'storage': {"entry 1": "value 1", "entry 2": "value 2", "entry 3": "value 3"}, 'msg': ''}
1538-
>>> client.get_storage({'keys': ["entry 1", "entry 3"]})
1546+
>>> client.get_storage(keys = ["entry 1", "entry 3"])
15391547
{'result': 'success', 'storage': {'entry 1': 'value 1', 'entry 3': 'value 3'}, 'msg': ''}
15401548
'''
15411549
return self.call_endpoint(
15421550
url='bot_storage',
15431551
method='GET',
1544-
request=request,
1552+
request={**deprecated_request(request), **kwargs},
15451553
)
15461554

1547-
def set_typing_status(self, request: Dict[str, Any]) -> Dict[str, Any]:
1555+
def set_typing_status(self, request: Dict[str, Any] = None, **kwargs: Any) -> Dict[str, Any]:
15481556
'''
15491557
Example usage:
1550-
>>> client.set_typing_status({
1558+
>>> client.set_typing_status(
15511559
'op': 'start',
15521560
'to': [9, 10],
1553-
})
1561+
)
15541562
{'result': 'success', 'msg': ''}
15551563
'''
15561564
return self.call_endpoint(
15571565
url='typing',
15581566
method='POST',
1559-
request=request
1567+
request={**deprecated_request(request), **kwargs}
15601568
)
15611569

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