diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2013-05-21 08:13:40 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2013-05-21 08:14:27 (GMT) |
commit | 35780392f6b7ad018efdfedbfe61a059c7fd0cd0 (patch) | |
tree | a896b4923f2f111962b514532b6d10bfcbf8ee1b | |
parent | 0677510290b863f1c9df060f162df333194c51ca (diff) |
Switch to requests-1.2.1
-rw-r--r-- | sugar_network/client/__init__.py | 11 | ||||
m--------- | sugar_network/lib/requests | 0 | ||||
-rw-r--r-- | sugar_network/node/slave.py | 3 | ||||
-rw-r--r-- | sugar_network/node/sync.py | 35 | ||||
-rw-r--r-- | sugar_network/toolkit/http.py | 34 |
5 files changed, 19 insertions, 64 deletions
diff --git a/sugar_network/client/__init__.py b/sugar_network/client/__init__.py index e5e75bd..bf784f8 100644 --- a/sugar_network/client/__init__.py +++ b/sugar_network/client/__init__.py @@ -145,7 +145,7 @@ def path(*args): return str(result) -def Client(url=None, **session): +def Client(url=None): from sugar_network.toolkit import http if url is None: url = api_url.value @@ -156,15 +156,14 @@ def Client(url=None, **session): else: _logger.warning('Sugar session was never started (no DSA key),' 'fallback to anonymous mode') - return http.Client(url, creds=creds, **session) + return http.Client(url, creds=creds) -def IPCClient(**session): +def IPCClient(): from sugar_network.toolkit import http - # Since `IPCClient` uses only localhost, ignore `http_proxy` envar - session['config'] = {'trust_env': False} url = 'http://localhost:%s' % ipc_port.value - return http.Client(url, creds=None, **session) + # It is localhost, so, ignore `http_proxy` envar disabling `trust_env` + return http.Client(url, creds=None, trust_env=False) def IPCRouter(*args, **kwargs): diff --git a/sugar_network/lib/requests b/sugar_network/lib/requests -Subproject 325765ec1b69d9f55a221263ef1504541210fd1 +Subproject 8017efb07d0c2927e1aa2bac60005a75c211878 diff --git a/sugar_network/node/slave.py b/sugar_network/node/slave.py index 97e7f54..762f468 100644 --- a/sugar_network/node/slave.py +++ b/sugar_network/node/slave.py @@ -80,8 +80,7 @@ class SlaveCommands(NodeCommands): if stats_user.stats_user.value: push.append(('stats_diff', None, stats_user.diff())) response = conn.request('POST', - data=sync.chunked_encode(push, - src=self.guid, dst=self._master_guid), + data=sync.encode(push, src=self.guid, dst=self._master_guid), params={'cmd': 'sync'}, headers={'Transfer-Encoding': 'chunked'}) self._import(sync.decode(response.raw), None) diff --git a/sugar_network/node/sync.py b/sugar_network/node/sync.py index fd71580..e95f989 100644 --- a/sugar_network/node/sync.py +++ b/sugar_network/node/sync.py @@ -52,10 +52,6 @@ def limited_encode(limit, packets, **header): return _encode(limit, packets, False, header, _EncodingStatus()) -def chunked_encode(packets, **header): - return _ChunkedEncoder(encode(packets, **header)) - - def package_decode(stream): stream = _GzipStream(stream) package_props = json.loads(stream.readline()) @@ -212,37 +208,6 @@ def _encode(limit, packets, download_blobs, header, status): yield json.dumps({'packet': 'last'}) + '\n' -class _ChunkedEncoder(object): - - def __init__(self, encoder): - self._encoder = encoder - self._buffer = '' - self._buffer_start = 0 - self._buffer_end = 0 - - def read(self, size): - if self._encoder is None: - return '' - - def buffer_read(): - result = self._buffer[self._buffer_start:self._buffer_start + size] - self._buffer_start += size - return '%X\r\n%s\r\n' % (len(result), result) - - if self._buffer_start < self._buffer_end: - return buffer_read() - - try: - self._buffer = next(self._encoder) - except StopIteration: - self._encoder = None - return '0\r\n\r\n' - - self._buffer_start = 0 - self._buffer_end = len(self._buffer) - return buffer_read() - - class _PacketsIterator(object): def __init__(self, stream): diff --git a/sugar_network/toolkit/http.py b/sugar_network/toolkit/http.py index 207530f..7186edd 100644 --- a/sugar_network/toolkit/http.py +++ b/sugar_network/toolkit/http.py @@ -21,16 +21,14 @@ from os.path import join, dirname sys.path.insert(0, join(dirname(__file__), '..', 'lib', 'requests')) -import requests -from requests.sessions import Session +from requests import Session, ConnectionError +from requests.exceptions import SSLError from sugar_network import client, toolkit from sugar_network.toolkit import coroutine, util from sugar_network.toolkit import BUFFER_SIZE, exception, enforce -ConnectionError = requests.ConnectionError - _RECONNECTION_NUMBER = 1 _RECONNECTION_TIMEOUT = 3 @@ -89,25 +87,20 @@ class NotFound(Status): class Client(object): - def __init__(self, api_url='', creds=None, **session): + def __init__(self, api_url='', creds=None, trust_env=True): self.api_url = api_url self._get_profile = None + self._session = session = Session() - verify = True + session.stream = True + session.trust_env = trust_env if client.no_check_certificate.value: - verify = False - elif client.certfile.value: - verify = client.certfile.value - - headers = {'Accept-Language': toolkit.default_lang()} + session.verify = False if creds: uid, keyfile, self._get_profile = creds - headers['SUGAR_USER'] = uid - headers['SUGAR_USER_SIGNATURE'] = _sign(keyfile, uid) - session['headers'] = headers - session['verify'] = verify - session['prefetch'] = False - self._session = Session(**session) + session.headers['SUGAR_USER'] = uid + session.headers['SUGAR_USER_SIGNATURE'] = _sign(keyfile, uid) + session.headers['Accept-Language'] = toolkit.default_lang() def __enter__(self): return self @@ -161,10 +154,9 @@ class Client(object): while True: try: - response = requests.request(method, path, data=data, - headers=headers, session=self._session, params=params, - **kwargs) - except requests.exceptions.SSLError: + response = self._session.request(method, path, data=data, + headers=headers, params=params, **kwargs) + except SSLError: _logger.warning('Use --no-check-certificate to avoid checks') raise |