Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2013-05-21 08:13:40 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2013-05-21 08:14:27 (GMT)
commit35780392f6b7ad018efdfedbfe61a059c7fd0cd0 (patch)
treea896b4923f2f111962b514532b6d10bfcbf8ee1b
parent0677510290b863f1c9df060f162df333194c51ca (diff)
Switch to requests-1.2.1
-rw-r--r--sugar_network/client/__init__.py11
m---------sugar_network/lib/requests0
-rw-r--r--sugar_network/node/slave.py3
-rw-r--r--sugar_network/node/sync.py35
-rw-r--r--sugar_network/toolkit/http.py34
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