Skip to content

Commit 76f8422

Browse files
committed
update MonoManager and add config
1 parent 51cc72f commit 76f8422

2 files changed

Lines changed: 88 additions & 31 deletions

File tree

monobank_api_client/config.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# monobank urls
2+
MONO_CURRENCY_URI = 'https://api.monobank.ua/bank/currency'
3+
MONO_CLIENT_INFO_URI = 'https://api.monobank.ua/personal/client-info'
4+
MONO_STATEMENT = 'https://api.monobank.ua/personal/statement/0/'
5+
MONO_WEBHOOK_URI = 'https://api.monobank.ua/personal/webhook'

monobank_api_client/managers.py

Lines changed: 83 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,77 @@
22
import requests
33
from datetime import datetime
44

5+
from .config import (
6+
MONO_CURRENCY_URI,
7+
MONO_CLIENT_INFO_URI,
8+
MONO_STATEMENT,
9+
MONO_WEBHOOK_URI,
10+
)
11+
512

613
class MonoManager:
714

8-
def __init__(self, request):
15+
def __init__(self, request, token=None):
916
self.request = request
17+
self._token = token
18+
19+
_session = requests.Session()
20+
21+
_day_unix = 86400 # 1 day (UNIX)
22+
23+
_mono_currency_uri = MONO_CURRENCY_URI
24+
_mono_client_info_uri = MONO_CLIENT_INFO_URI
25+
_mono_statement_uri = MONO_STATEMENT
26+
_mono_webhook_uri = MONO_WEBHOOK_URI
27+
28+
@property
29+
def token(self):
30+
return self._token
31+
32+
@token.setter
33+
def token(self, new_token):
34+
self._token = new_token
35+
36+
@property
37+
def mono_currency_uri(self):
38+
return self._mono_currency_uri
1039

11-
session = requests.Session()
40+
@mono_currency_uri.setter
41+
def mono_currency_uri(self, new_uri):
42+
self._mono_currency_uri = new_uri
43+
44+
@property
45+
def mono_client_info_uri(self):
46+
return self._mono_client_info_uri
47+
48+
@mono_client_info_uri.setter
49+
def mono_client_info_uri(self, new_uri):
50+
self._mono_client_info_uri = new_uri
51+
52+
@property
53+
def mono_statement_uri(self):
54+
return self._mono_statement_uri
1255

13-
_currency_uri = 'https://api.monobank.ua/bank/currency'
14-
_client_info_uri = 'https://api.monobank.ua/personal/client-info'
15-
_statement_uri = 'https://api.monobank.ua/personal/statement/0/'
16-
_webhook_uri = 'https://api.monobank.ua/personal/webhook'
17-
_day_utc = 86400 # 1 day (UNIX)
56+
@mono_statement_uri.setter
57+
def mono_statement_uri(self, new_uri):
58+
self._mono_statement_uri = new_uri
59+
60+
@property
61+
def mono_webhook_uri(self):
62+
return self._mono_webhook_uri
63+
64+
@mono_webhook_uri.setter
65+
def mono_webhook_uri(self, new_uri):
66+
self._mono_webhook_uri = new_uri
67+
1868

1969
@classmethod
70+
@property
2071
def get_currency(cls) -> Tuple[int, Dict[str, Any]]:
2172
try:
22-
response = cls.session.get(cls._currency_uri)
73+
session = cls._session
74+
uri = cls._mono_client_info_uri
75+
response = session.get(uri)
2376
response.raise_for_status()
2477
return response.status_code, response.json()
2578
except requests.exceptions.HTTPError as exc:
@@ -33,13 +86,13 @@ def get_currency(cls) -> Tuple[int, Dict[str, Any]]:
3386
"detail": str(exc)
3487
}
3588

36-
def get_client_info(self, token: str) -> Tuple[int, Dict[str, Any]]:
89+
def get_client_info(self) -> Tuple[int, Dict[str, Any]]:
3790
try:
91+
session = self._session
92+
token = self._token
93+
uri = self._mono_client_info_uri
3894
headers = {"X-Token": token}
39-
response = self.session.get(
40-
self._client_info_uri,
41-
headers=headers
42-
)
95+
response = session.get(uri, headers=headers)
4396
response.raise_for_status()
4497
return response.status_code, response.json()
4598
except requests.exceptions.HTTPError as exc:
@@ -53,13 +106,13 @@ def get_client_info(self, token: str) -> Tuple[int, Dict[str, Any]]:
53106
"detail": str(exc)
54107
}
55108

56-
def get_balance(self, token: str) -> Tuple[int, Dict[str, Any]]:
109+
def get_balance(self) -> Tuple[int, Dict[str, Any]]:
57110
try:
111+
session = self._session
112+
token = self._token
113+
uri = self._mono_client_info_uri
58114
headers = {"X-Token": token}
59-
response = self.session.get(
60-
self._client_info_uri,
61-
headers=headers
62-
)
115+
response = session.get(uri, headers=headers)
63116
response.raise_for_status()
64117
balance = {
65118
'balance': response.json()["accounts"][0]["balance"] / 100
@@ -76,14 +129,14 @@ def get_balance(self, token: str) -> Tuple[int, Dict[str, Any]]:
76129
"detail": str(exc)
77130
}
78131

79-
def get_statement(self, token: str, period: int) -> Tuple[int, Dict[str, Any]]:
132+
def get_statement(self, period: int) -> Tuple[int, Dict[str, Any]]:
80133
try:
81-
time_delta = int(datetime.now().timestamp()) - (period * self._day_utc)
134+
session = self._session
135+
token = self._token
136+
uri = self._mono_statement_uri
82137
headers = {"X-Token": token}
83-
response = self.session.get(
84-
f"{self._statement_uri}{time_delta}/",
85-
headers=headers
86-
)
138+
time_delta = int(datetime.now().timestamp()) - (period * self._day_unix)
139+
response = session.get(f"{uri}{time_delta}/", headers=headers)
87140
response.raise_for_status()
88141
return response.status_code, response.json()
89142
except requests.exceptions.HTTPError as exc:
@@ -97,14 +150,13 @@ def get_statement(self, token: str, period: int) -> Tuple[int, Dict[str, Any]]:
97150
"detail": str(exc)
98151
}
99152

100-
def create_webhook(self, token: str, webHookUrl: str) -> Tuple[int, Dict[str, Any]]:
101-
try:
153+
def create_webhook(self, webHookUrl: str) -> Tuple[int, Dict[str, Any]]:
154+
try:
155+
session = self._session
156+
token = self._token
157+
uri = self._mono_webhook_uri
102158
headers = {"X-Token": token}
103-
response = self.session.post(
104-
self._webhook_uri,
105-
data=webHookUrl,
106-
headers=headers
107-
)
159+
response = session.post(uri, data=webHookUrl, headers=headers)
108160
response.raise_for_status()
109161
return response.status_code, response.json()
110162
except requests.exceptions.HTTPError as exc:

0 commit comments

Comments
 (0)