11"""Encapsulate common rest operations between business services propagating trace headers if configured.
22"""
33import logging
4+ from typing import Any
45
56import requests
67from flask import request
7- from requests .adapters import HTTPAdapter
8+ from requests .adapters import HTTPAdapter , Response
89from urllib3 .util .retry import Retry
910
1011from pyms .constants import LOGGER_NAME
1819DEFAULT_STATUS_RETRIES = (500 , 502 , 504 )
1920
2021
21- def retry (f ):
22- def wrapper (* args , ** kwargs ):
22+ def retry (f ) -> Any :
23+ def wrapper (* args , ** kwargs ) -> Any :
2324 response = False
2425 i = 0
2526 response_ok = False
@@ -53,7 +54,7 @@ class Service(DriverService):
5354 }
5455 tracer = None
5556
56- def requests (self , session : requests .Session ):
57+ def requests (self , session : requests .Session ) -> requests . Session :
5758 """
5859 A backoff factor to apply between attempts after the second try (most errors are resolved immediately by a
5960 second try without a delay). urllib3 will sleep for: {backoff factor} * (2 ^ ({number of total retries} - 1))
@@ -113,7 +114,7 @@ def _get_headers(self, headers: dict, propagate_headers: bool = False) -> dict:
113114 return headers
114115
115116 @staticmethod
116- def _build_url (url , path_params = None ):
117+ def _build_url (url , path_params : dict = None ) -> str :
117118 """Compose full url replacing placeholders with path_params values.
118119
119120 :param url: base url
@@ -124,7 +125,7 @@ def _build_url(url, path_params=None):
124125
125126 return url .format_map (path_params )
126127
127- def parse_response (self , response ) :
128+ def parse_response (self , response : Response ) -> dict :
128129 """Parses response's json object. Checks configuration in order to parse a concrete node or the whole response.
129130
130131 :param response: request's response that contains a valid json
@@ -142,7 +143,8 @@ def parse_response(self, response):
142143 return {}
143144
144145 @retry
145- def get (self , url , path_params = None , params = None , headers = None , propagate_headers = False , ** kwargs ):
146+ def get (self , url : str , path_params : dict = None , params : dict = None , headers : dict = None ,
147+ propagate_headers : bool = False , ** kwargs ) -> Response :
146148 """Sends a GET request.
147149
148150 :param url: URL for the new :class:`Request` object. Could contain path parameters
@@ -167,7 +169,8 @@ def get(self, url, path_params=None, params=None, headers=None, propagate_header
167169
168170 return response
169171
170- def get_for_object (self , url , path_params = None , params = None , headers = None , ** kwargs ):
172+ def get_for_object (self , url : str , path_params : dict = None , params : dict = None , headers : dict = None ,
173+ ** kwargs ) -> dict :
171174 """Sends a GET request and returns the json representation found in response's content data node.
172175
173176 :param url: URL for the new :class:`Request` object. Could contain path parameters
@@ -184,7 +187,8 @@ def get_for_object(self, url, path_params=None, params=None, headers=None, **kwa
184187 return self .parse_response (response )
185188
186189 @retry
187- def post (self , url , path_params = None , data = None , json = None , headers = None , ** kwargs ):
190+ def post (self , url : str , path_params : dict = None , data : dict = None , json : dict = None , headers : dict = None ,
191+ ** kwargs ) -> Response :
188192 """Sends a POST request.
189193
190194 :param url: URL for the new :class:`Request` object. Could contain path parameters
@@ -210,7 +214,8 @@ def post(self, url, path_params=None, data=None, json=None, headers=None, **kwar
210214
211215 return response
212216
213- def post_for_object (self , url , path_params = None , data = None , json = None , headers = None , ** kwargs ):
217+ def post_for_object (self , url : str , path_params : dict = None , data : dict = None , json : dict = None ,
218+ headers : dict = None , ** kwargs ) -> dict :
214219 """Sends a POST request and returns the json representation found in response's content data node.
215220
216221 :param url: URL for the new :class:`Request` object. Could contain path parameters
@@ -228,7 +233,7 @@ def post_for_object(self, url, path_params=None, data=None, json=None, headers=N
228233 return self .parse_response (response )
229234
230235 @retry
231- def put (self , url , path_params = None , data = None , headers = None , ** kwargs ):
236+ def put (self , url : str , path_params : dict = None , data : dict = None , headers : dict = None , ** kwargs ) -> Response :
232237 """Sends a PUT request.
233238
234239 :param url: URL for the new :class:`Request` object. Could contain path parameters
@@ -254,7 +259,8 @@ def put(self, url, path_params=None, data=None, headers=None, **kwargs):
254259
255260 return response
256261
257- def put_for_object (self , url , path_params = None , data = None , headers = None , ** kwargs ):
262+ def put_for_object (self , url : str , path_params : dict = None , data : dict = None , headers : dict = None ,
263+ ** kwargs ) -> dict :
258264 """Sends a PUT request and returns the json representation found in response's content data node.
259265
260266 :param url: URL for the new :class:`Request` object. Could contain path parameters
@@ -272,7 +278,7 @@ def put_for_object(self, url, path_params=None, data=None, headers=None, **kwarg
272278 return self .parse_response (response )
273279
274280 @retry
275- def patch (self , url , path_params = None , data = None , headers = None , ** kwargs ):
281+ def patch (self , url : str , path_params : dict = None , data : dict = None , headers : dict = None , ** kwargs ) -> Response :
276282 """Sends a PATCH request.
277283
278284 :param url: URL for the new :class:`Request` object. Could contain path parameters
@@ -298,7 +304,8 @@ def patch(self, url, path_params=None, data=None, headers=None, **kwargs):
298304
299305 return response
300306
301- def patch_for_object (self , url , path_params = None , data = None , headers = None , ** kwargs ):
307+ def patch_for_object (self , url : str , path_params : dict = None , data : dict = None , headers : dict = None ,
308+ ** kwargs ) -> dict :
302309 """Sends a PATCH request and returns the json representation found in response's content data node.
303310
304311 :param url: URL for the new :class:`Request` object. Could contain path parameters
@@ -316,7 +323,7 @@ def patch_for_object(self, url, path_params=None, data=None, headers=None, **kwa
316323 return self .parse_response (response )
317324
318325 @retry
319- def delete (self , url , path_params = None , headers = None , ** kwargs ):
326+ def delete (self , url : str , path_params : dict = None , headers : dict = None , ** kwargs ) -> Response :
320327 """Sends a DELETE request.
321328
322329 :param url: URL for the new :class:`Request` object. Could contain path parameters
0 commit comments