-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathacme_api.py
42 lines (29 loc) · 1.24 KB
/
acme_api.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from json import JSONDecodeError
import backoff
import requests
def fatal_code(e):
if isinstance(e, JSONDecodeError):
return False
return 400 <= e.response.status_code < 500
class AcmeAPI:
def __init__(self):
self.base_url = "https://api-engine-dev.clerq.io/tech_assessment"
@backoff.on_exception(backoff.expo, (requests.exceptions.RequestException, JSONDecodeError), max_tries=10, giveup=fatal_code)
def get_all_merchants(self, page_number: 1):
full_url = "/".join([self.base_url, "merchants"])
params = {"page": page_number, "ordering": "updated_at"}
response = requests.get(full_url, params=params)
res = response.json()
return res
@backoff.on_exception(backoff.expo, (requests.exceptions.RequestException, JSONDecodeError), max_tries=10, giveup=fatal_code)
def get_all_transactions(self, page_number: 1):
full_url = "/".join([self.base_url, "transactions"])
params = {"page": page_number, "ordering": "updated_at"}
response = requests.get(full_url, params=params)
res = response.json()
return res
# TESTS
if __name__ == "__main__":
acme_api = AcmeAPI()
# print(acme_api.get_merchants())
acme_api.get_all_transactions()