Skip to content

Commit 1b34d87

Browse files
authored
Merge pull request mercadopago#49 from WhyNotHugo/deduplicate-client-functions
Deduplicate some client functions
2 parents 642376f + ddf5e9b commit 1b34d87

1 file changed

Lines changed: 15 additions & 38 deletions

File tree

mercadopago/http/http_client.py

Lines changed: 15 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -11,57 +11,34 @@ class HttpClient():
1111
Default implementation to call all REST API's
1212
"""
1313

14-
def __init__(self):
15-
pass
14+
def request(self, method, url, maxretries=None, **kwargs):
15+
"""Makes a call to the API.
1616
17-
@staticmethod
18-
def __get_session(max_retries):
17+
All **kwargs are passed verbatimm to ``requests.request``.
18+
"""
1919
retry_strategy = Retry(
20-
total=max_retries,
20+
total=maxretries,
2121
status_forcelist=[429, 500, 502, 503, 504]
2222
)
2323
http = requests.Session()
2424
http.mount("https://", HTTPAdapter(max_retries=retry_strategy))
25-
return http
26-
27-
def get(self, url, headers, params=None, timeout=None, maxretries=None): #pylint: disable=missing-function-docstring, too-many-arguments
28-
with self.__get_session(maxretries) as session:
29-
api_result = session.get(url, params=params, headers=headers, timeout=timeout)
25+
with http as session:
26+
api_result = session.request(method, url, **kwargs)
3027
response = {
3128
"status": api_result.status_code,
3229
"response": api_result.json()
3330
}
3431

3532
return response
3633

37-
def post(self, url, headers, data=None, params=None, timeout=None, maxretries=None): #pylint: disable=missing-function-docstring, too-many-arguments
38-
with self.__get_session(maxretries) as session:
39-
api_result = session.post(url, params=params, data=data,
40-
headers=headers, timeout=timeout)
41-
response = {
42-
"status": api_result.status_code,
43-
"response": api_result.json()
44-
}
45-
46-
return response
47-
48-
def put(self, url, headers, data=None, params=None, timeout=None, maxretries=None): #pylint: disable=missing-function-docstring, too-many-arguments
49-
with self.__get_session(maxretries) as session:
50-
api_result = session.put(url, params=params, data=data,
51-
headers=headers, timeout=timeout)
52-
response = {
53-
"status": api_result.status_code,
54-
"response": api_result.json()
55-
}
34+
def get(self, url, headers, params=None, timeout=None, maxretries=None): # pylint: disable=missing-function-docstring, too-many-arguments
35+
return self.request("GET", url=url, headers=headers, params=params, timeout=timeout, maxretries=maxretries)
5636

57-
return response
37+
def post(self, url, headers, data=None, params=None, timeout=None, maxretries=None): # pylint: disable=missing-function-docstring, too-many-arguments
38+
return self.request("POST", url=url, headers=headers, data=data, params=params, timeout=timeout, maxretries=maxretries)
5839

59-
def delete(self, url, headers, params=None, timeout=None, maxretries=None): #pylint: disable=missing-function-docstring, too-many-arguments
60-
with self.__get_session(maxretries) as session:
61-
api_result = session.delete(url, params=params, headers=headers, timeout=timeout)
62-
response = {
63-
"status": api_result.status_code,
64-
"response": api_result.json()
65-
}
40+
def put(self, url, headers, data=None, params=None, timeout=None, maxretries=None): # pylint: disable=missing-function-docstring, too-many-arguments
41+
return self.request("PUT", url=url, headers=headers, data=data, params=params, timeout=timeout, maxretries=maxretries)
6642

67-
return response
43+
def delete(self, url, headers, params=None, timeout=None, maxretries=None): # pylint: disable=missing-function-docstring, too-many-arguments
44+
return self.request("DELETE", url=url, headers=headers, params=params, timeout=timeout, maxretries=maxretries)

0 commit comments

Comments
 (0)