Skip to content

Commit 122eca1

Browse files
author
Hugo Camino
committed
Refactor considering optional wrap node in json response.
1 parent f539fdc commit 122eca1

File tree

2 files changed

+23
-25
lines changed

2 files changed

+23
-25
lines changed

pyms/flask/services/requests.py

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
from pyms.flask.services.driver import DriverService
88

9-
DATA = 'data'
10-
119

1210
class Service(DriverService):
1311
service = "requests"
@@ -26,7 +24,7 @@ def insert_trace_headers(self, headers):
2624
2725
:rtype: dict
2826
"""
29-
self._tracer = current_app.tracer
27+
3028
try:
3129
# FLASK https://github.com/opentracing-contrib/python-flask
3230
span = self._tracer.get_span()
@@ -46,6 +44,7 @@ def _get_headers(self, headers):
4644
if not headers:
4745
headers = {}
4846

47+
self._tracer = current_app.tracer
4948
if self._tracer:
5049
headers = self.insert_trace_headers(headers)
5150

@@ -63,6 +62,23 @@ def _build_url(url, path_params=None):
6362

6463
return url.format_map(path_params)
6564

65+
def parse_response(self, response):
66+
"""Parses response's json object. Checks configuration in order to parse a concrete node or the whole response.
67+
68+
:param response: request's response that contains a valid json
69+
70+
:rtype: dict
71+
"""
72+
73+
try:
74+
data = response.json()
75+
if self.config.data:
76+
data = data.get(self.config.data, {})
77+
return data
78+
except ValueError:
79+
current_app.logger.warning("Response.content is not a valid json {}".format(response.content))
80+
return {}
81+
6682
def get(self, url, path_params=None, params=None, headers=None, **kwargs):
6783
"""Sends a GET request.
6884
@@ -99,15 +115,7 @@ def get_for_object(self, url, path_params=None, params=None, headers=None, **kwa
99115
"""
100116

101117
response = self.get(url, path_params=path_params, params=params, headers=headers, **kwargs)
102-
103-
try:
104-
data = response.json()
105-
if self.config.data:
106-
data = data.get(self.config.data, {})
107-
return data
108-
except ValueError:
109-
current_app.logger.warning("Response.content is not a valid json {}".format(response.content))
110-
return {}
118+
return self.parse_response(response)
111119

112120
def post(self, url, path_params=None, data=None, json=None, headers=None, **kwargs):
113121
"""Sends a POST request.
@@ -147,12 +155,7 @@ def post_for_object(self, url, path_params=None, data=None, json=None, headers=N
147155
"""
148156

149157
response = self.post(url, path_params=path_params, data=data, json=json, headers=headers, **kwargs)
150-
151-
try:
152-
return response.json().get(DATA, {})
153-
except ValueError:
154-
current_app.logger.warning("Response.content is not a valid json {}".format(response.content))
155-
return {}
158+
return self.parse_response(response)
156159

157160
def put(self, url, path_params=None, data=None, headers=None, **kwargs):
158161
"""Sends a PUT request.
@@ -192,12 +195,7 @@ def put_for_object(self, url, path_params=None, data=None, headers=None, **kwarg
192195
"""
193196

194197
response = self.put(url, path_params=path_params, data=data, headers=headers, **kwargs)
195-
196-
try:
197-
return response.json().get(DATA, {})
198-
except ValueError:
199-
current_app.logger.warning("Response.content is not a valid json {}".format(response.content))
200-
return {}
198+
return self.parse_response(response)
201199

202200
def delete(self, url, path_params=None, headers=None, **kwargs):
203201
"""Sends a DELETE request.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from pyms.flask.app import Microservice
1111

1212

13-
class RequestTests(unittest.TestCase):
13+
class RequestServiceTests(unittest.TestCase):
1414
"""Test common rest operations wrapper.
1515
"""
1616

0 commit comments

Comments
 (0)