From a0d71feffd4e5fec671ff8f9dede4973dc998854 Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Mon, 01 Oct 2012 16:15:14 +0000 Subject: Make http.Client.get() consistent and do not return conditional Response object --- diff --git a/sugar_network/toolkit/http.py b/sugar_network/toolkit/http.py index cb7028a..bb177da 100644 --- a/sugar_network/toolkit/http.py +++ b/sugar_network/toolkit/http.py @@ -82,33 +82,29 @@ class Client(object): self._session.close() def exists(self, path): - response = self.request('GET', path, allowed=[404], params=self.params) + response = self.request('GET', path, allowed=[404]) return response.status_code != 404 def get(self, path_=None, **kwargs): - kwargs.update(self.params) response = self.request('GET', path_, params=kwargs) - return self._decode_response(response) + return self._decode_reply(response) def post(self, path_=None, data_=None, **kwargs): - kwargs.update(self.params) response = self.request('POST', path_, data_, headers={'Content-Type': 'application/json'}, params=kwargs) - return self._decode_response(response) + return self._decode_reply(response) def put(self, path_=None, data_=None, **kwargs): - kwargs.update(self.params) response = self.request('PUT', path_, data_, headers={'Content-Type': 'application/json'}, params=kwargs) - return self._decode_response(response) + return self._decode_reply(response) def delete(self, path_=None, **kwargs): - kwargs.update(self.params) response = self.request('DELETE', path_, params=kwargs) - return self._decode_response(response) + return self._decode_reply(response) def request(self, method, path=None, data=None, headers=None, allowed=None, - **kwargs): + params=None, **kwargs): if not path: path = [''] if not isinstance(path, basestring): @@ -118,10 +114,16 @@ class Client(object): headers.get('Content-Type') == 'application/json': data = json.dumps(data) + if params is None: + params = self.params + else: + params.update(self.params) + while True: try: response = requests.request(method, path, data=data, - headers=headers, session=self._session, **kwargs) + headers=headers, session=self._session, params=params, + **kwargs) except requests.exceptions.SSLError: _logger.warning('Use --no-check-certificate to avoid checks') raise @@ -167,7 +169,7 @@ class Client(object): if response is not None: response.content_type = reply.headers['Content-Type'] - return self._decode_response(reply) + return self._decode_reply(reply) def download(self, url_path, out_path, seqno=None, extract=False): if isdir(out_path): @@ -280,11 +282,9 @@ class Client(object): }, ) - def _decode_response(self, response): + def _decode_reply(self, response): if response.headers.get('Content-Type') == 'application/json': return json.loads(response.content) - else: - return response def _sign(data): diff --git a/tests/units/home_mount.py b/tests/units/home_mount.py index 48acd21..3bbaab1 100755 --- a/tests/units/home_mount.py +++ b/tests/units/home_mount.py @@ -105,11 +105,11 @@ class HomeMountTest(tests.Test): self.touch(('file', 'blob')) local.put(['context', guid, 'preview'], cmd='upload_blob', path=abspath('file')) - self.assertEqual('blob', local.get(['context', guid, 'preview']).content) + self.assertEqual('blob', local.request('GET', ['context', guid, 'preview']).content) self.touch(('file2', 'blob2')) local.put(['context', guid, 'preview'], cmd='upload_blob', path=abspath('file2'), pass_ownership=True) - self.assertEqual('blob2', local.get(['context', guid, 'preview']).content) + self.assertEqual('blob2', local.request('GET', ['context', guid, 'preview']).content) assert not exists('file2') def test_GetBLOBs(self): @@ -128,7 +128,7 @@ class HomeMountTest(tests.Test): self.assertEqual( 'icon-blob', - client.get(['context', guid, 'icon']).content) + client.request('GET', ['context', guid, 'icon']).content) blob_url = 'http://localhost:%s/context/%s/icon?mountpoint=~' % (local.ipc_port.value, guid) self.assertEqual( [{'guid': guid, 'icon': blob_url}], diff --git a/tests/units/node_mount.py b/tests/units/node_mount.py index c0f04b0..4f0ef0e 100755 --- a/tests/units/node_mount.py +++ b/tests/units/node_mount.py @@ -289,11 +289,11 @@ class NodeMountTest(tests.Test): self.touch(('file', 'blob')) client.put(['context', guid, 'preview'], cmd='upload_blob', path=abspath('file')) - self.assertEqual('blob', client.get(['context', guid, 'preview']).content) + self.assertEqual('blob', client.request('GET', ['context', guid, 'preview']).content) self.touch(('file2', 'blob2')) client.put(['context', guid, 'preview'], cmd='upload_blob', path=abspath('file2'), pass_ownership=True) - self.assertEqual('blob2', client.get(['context', guid, 'preview']).content) + self.assertEqual('blob2', client.request('GET', ['context', guid, 'preview']).content) assert not exists('file2') def test_GetBLOBs(self): @@ -313,7 +313,7 @@ class NodeMountTest(tests.Test): self.assertEqual( 'icon-blob', - client.get(['context', guid, 'icon']).content) + client.request('GEt', ['context', guid, 'icon']).content) blob_url = 'http://localhost:%s/context/%s/icon?mountpoint=%s' % (local.ipc_port.value, guid, tests.tmpdir + '/mnt') self.assertEqual( [{'guid': guid, 'icon': blob_url}], diff --git a/tests/units/remote_mount.py b/tests/units/remote_mount.py index 986267e..8ccc2c4 100755 --- a/tests/units/remote_mount.py +++ b/tests/units/remote_mount.py @@ -258,11 +258,11 @@ class RemoteMountTest(tests.Test): self.touch(('file', 'blob')) remote.put(['context', guid, 'preview'], cmd='upload_blob', path=abspath('file')) - self.assertEqual('blob', remote.get(['context', guid, 'preview']).content) + self.assertEqual('blob', remote.request('GEt', ['context', guid, 'preview']).content) self.touch(('file2', 'blob2')) remote.put(['context', guid, 'preview'], cmd='upload_blob', path=abspath('file2'), pass_ownership=True) - self.assertEqual('blob2', remote.get(['context', guid, 'preview']).content) + self.assertEqual('blob2', remote.request('GET', ['context', guid, 'preview']).content) assert not exists('file2') def test_GetBLOBs(self): @@ -283,7 +283,7 @@ class RemoteMountTest(tests.Test): self.assertEqual( 'preview-blob', - remote.get(['context', guid, 'preview']).content) + remote.request('GET', ['context', guid, 'preview']).content) assert local.ipc_port.value != 8800 url_prefix = 'http://localhost:8800/context/' + guid self.assertEqual( diff --git a/tests/units/router.py b/tests/units/router.py index 2ec35d4..23e4862 100755 --- a/tests/units/router.py +++ b/tests/units/router.py @@ -97,7 +97,7 @@ class RouterTest(tests.Test): client.put(['document', guid_2, 'blob'], payload) self.assertEqual( payload, - client.get(['document', guid_2, 'blob']).content) + client.request('GET', ['document', guid_2, 'blob']).content) client.delete(['document', guid_2]) @@ -223,7 +223,7 @@ class RouterTest(tests.Test): client = Client('http://localhost:8800', sugar_auth=True) guid = client.post(['document2'], {'term': 'probe'}) content = urllib2.urlopen(URL).read() - assert content == client.get(['document2', guid, 'blob']).content + assert content == client.request('GET', ['document2', guid, 'blob']).content def test_Request_MultipleQueryArguments(self): request = _Request({ -- cgit v0.9.1