22import requests
33from 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
613class 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