66
77from pyms .flask .services .driver import DriverService
88
9- DATA = 'data'
10-
119
1210class 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.
0 commit comments