Add deserialized_content
to the response
This is a helper method that aims to centralize response's content deserialization and remove the burden of this process from the client. Partially-Implements: python-marconiclient-v1 Change-Id: Ia98e9b9cdf5bdd88f9f2cdeda39b49d2192a60eb
This commit is contained in:
parent
f7158405b4
commit
63256dfc48
@ -51,7 +51,8 @@ def _common_queue_ops(operation, transport, request, name, callback=None):
|
||||
"""
|
||||
request.operation = operation
|
||||
request.params['queue_name'] = name
|
||||
return transport.send(request)
|
||||
resp = transport.send(request)
|
||||
return resp.deserialized_content
|
||||
|
||||
|
||||
def queue_create(transport, request, name, callback=None):
|
||||
@ -72,9 +73,8 @@ def queue_exists(transport, request, name, callback=None):
|
||||
|
||||
def queue_get_metadata(transport, request, name, callback=None):
|
||||
"""Gets queue metadata."""
|
||||
resp = _common_queue_ops('queue_get_metadata', transport,
|
||||
return _common_queue_ops('queue_get_metadata', transport,
|
||||
request, name, callback=callback)
|
||||
return json.loads(resp.content)
|
||||
|
||||
|
||||
def queue_set_metadata(transport, request, name, metadata, callback=None):
|
||||
@ -132,7 +132,7 @@ def message_list(transport, request, queue_name, callback=None, **kwargs):
|
||||
# `links` and `messages`
|
||||
return {'links': [], 'messages': []}
|
||||
|
||||
return json.loads(resp.content)
|
||||
return resp.deserialized_content
|
||||
|
||||
|
||||
def message_post(transport, request, queue_name, messages, callback=None):
|
||||
@ -157,7 +157,7 @@ def message_post(transport, request, queue_name, messages, callback=None):
|
||||
request.content = json.dumps(messages)
|
||||
|
||||
resp = transport.send(request)
|
||||
return json.loads(resp.content)
|
||||
return resp.deserialized_content
|
||||
|
||||
|
||||
def message_get(transport, request, queue_name, message_id, callback=None):
|
||||
@ -182,7 +182,7 @@ def message_get(transport, request, queue_name, message_id, callback=None):
|
||||
request.params['message_id'] = message_id
|
||||
|
||||
resp = transport.send(request)
|
||||
return json.loads(resp.content)
|
||||
return resp.deserialized_content
|
||||
|
||||
|
||||
def message_get_many(transport, request, queue_name, messages, callback=None):
|
||||
@ -207,7 +207,7 @@ def message_get_many(transport, request, queue_name, messages, callback=None):
|
||||
request.params['ids'] = messages
|
||||
|
||||
resp = transport.send(request)
|
||||
return json.loads(resp.content)
|
||||
return resp.deserialized_content
|
||||
|
||||
|
||||
def message_delete(transport, request, queue_name, message_id, callback=None):
|
||||
@ -231,4 +231,4 @@ def message_delete(transport, request, queue_name, message_id, callback=None):
|
||||
request.params['queue_name'] = queue_name
|
||||
request.params['message_id'] = message_id
|
||||
|
||||
return transport.send(request)
|
||||
transport.send(request)
|
||||
|
@ -13,6 +13,8 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import json
|
||||
|
||||
|
||||
class Response(object):
|
||||
"""Common response class for Marconiclient.
|
||||
@ -29,9 +31,17 @@ class Response(object):
|
||||
:type: dict
|
||||
"""
|
||||
|
||||
__slots__ = ('request', 'content', 'headers')
|
||||
__slots__ = ('request', 'content', 'headers', '_deserialized')
|
||||
|
||||
def __init__(self, request, content, headers=None):
|
||||
self.request = request
|
||||
self.content = content
|
||||
self.headers = headers or {}
|
||||
|
||||
self._deserialized = None
|
||||
|
||||
@property
|
||||
def deserialized_content(self):
|
||||
if not self._deserialized and self.content:
|
||||
self._deserialized = json.loads(self.content)
|
||||
return self._deserialized
|
||||
|
@ -33,7 +33,7 @@ class TestV1Core(base.TestBase):
|
||||
def test_queue_create(self):
|
||||
with mock.patch.object(self.transport, 'send',
|
||||
autospec=True) as send_method:
|
||||
send_method.return_value = None
|
||||
send_method.return_value = response.Response(None, None)
|
||||
|
||||
req = request.Request()
|
||||
core.queue_create(self.transport, req, 'test')
|
||||
@ -42,7 +42,7 @@ class TestV1Core(base.TestBase):
|
||||
def test_queue_delete(self):
|
||||
with mock.patch.object(self.transport, 'send',
|
||||
autospec=True) as send_method:
|
||||
send_method.return_value = None
|
||||
send_method.return_value = response.Response(None, None)
|
||||
|
||||
req = request.Request()
|
||||
core.queue_delete(self.transport, req, 'test')
|
||||
@ -51,7 +51,7 @@ class TestV1Core(base.TestBase):
|
||||
def test_queue_exists(self):
|
||||
with mock.patch.object(self.transport, 'send',
|
||||
autospec=True) as send_method:
|
||||
send_method.return_value = None
|
||||
send_method.return_value = response.Response(None, None)
|
||||
|
||||
req = request.Request()
|
||||
ret = core.queue_exists(self.transport, req, 'test')
|
||||
@ -82,7 +82,7 @@ class TestV1Core(base.TestBase):
|
||||
update_data = {'some': 'data'}
|
||||
with mock.patch.object(self.transport, 'send',
|
||||
autospec=True) as send_method:
|
||||
send_method.return_value = None
|
||||
send_method.return_value = response.Response(None, None)
|
||||
|
||||
req = request.Request()
|
||||
core.queue_exists(self.transport, req, update_data, 'test')
|
||||
|
Loading…
x
Reference in New Issue
Block a user