api: Provide an informative User-agent instead of a client parameter
We previously sent our client type to the server as a GET/POST parameter of "client=<something>", most commonly "client=API: Python". We switch here to providing the same information as a User-agent header sent on each request, which is more standards-compliant. Also added is some data about the platform the user is using. If your client string was set to "MyLittleZulip/1.0", the resultant string could look something like this: MyLittleZulip/1.0 (Ubuntu; 12.04) (imported from commit 39fd187a8f9d4b3c9b63fc623e0836e57a4099ca)
This commit is contained in:
parent
6478da983e
commit
df29a93a61
|
@ -28,6 +28,7 @@ import urlparse
|
|||
import sys
|
||||
import os
|
||||
import optparse
|
||||
import platform
|
||||
from distutils.version import LooseVersion
|
||||
|
||||
from ConfigParser import SafeConfigParser
|
||||
|
@ -112,9 +113,25 @@ class Client(object):
|
|||
self.retry_on_errors = retry_on_errors
|
||||
self.client_name = client
|
||||
|
||||
def get_user_agent(self):
|
||||
vendor = platform.system()
|
||||
vendor_version = platform.release()
|
||||
|
||||
if vendor == "Linux":
|
||||
vendor, vendor_version, dummy = platform.linux_distribution()
|
||||
elif vendor == "Windows":
|
||||
vendor_version = platform.win32_ver()[1]
|
||||
elif vendor == "Darwin":
|
||||
vendor_version = platform.mac_ver()[0]
|
||||
|
||||
return "{client_name} ({vendor}; {vendor_version})".format(
|
||||
client_name=self.client_name,
|
||||
vendor=vendor,
|
||||
vendor_version=vendor_version,
|
||||
)
|
||||
|
||||
def do_api_query(self, orig_request, url, method="POST", longpolling = False):
|
||||
request = {}
|
||||
request["client"] = self.client_name
|
||||
|
||||
for (key, val) in orig_request.iteritems():
|
||||
if not (isinstance(val, str) or isinstance(val, unicode)):
|
||||
|
@ -164,6 +181,7 @@ class Client(object):
|
|||
auth=requests.auth.HTTPBasicAuth(self.email,
|
||||
self.api_key),
|
||||
verify=True, timeout=90,
|
||||
headers={"User-agent": self.get_user_agent()},
|
||||
**kwargs)
|
||||
|
||||
# On 50x errors, try again after a short sleep
|
||||
|
|
Loading…
Reference in a new issue