Skip to content

Commit a7b2f67

Browse files
committed
feat(repository): Adding Methods and Attributes
1 parent 0168be3 commit a7b2f67

File tree

12 files changed

+361
-208
lines changed

12 files changed

+361
-208
lines changed

monobank_api_client/async_mono/manager.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
import aiohttp
22
from typing import Dict
33
from mono_config.manager import BaseMonoManager
4-
from mono_config.exceptions import MonoException
54

65

7-
class AsyncMonoManager(BaseMonoManager, MonoException):
6+
class AsyncMonoManager(BaseMonoManager):
87
@classmethod
98
async def session(cls) -> aiohttp.client.ClientSession:
109
return aiohttp.ClientSession()
1110

1211
async def async_request(
13-
self, uri: str, headers: Dict | None, data: Dict | None, method: str
12+
self,
13+
method: str,
14+
uri: str,
15+
headers=None,
16+
data=None,
1417
) -> Dict:
1518
session = await self.session()
1619
if method == "GET":
@@ -33,9 +36,7 @@ async def async_request(
3336
async def get_currencies(self) -> Dict:
3437
try:
3538
uri = self.mono_currencies_uri
36-
response = await self.async_request(
37-
uri=uri, headers=None, data=None, method="GET"
38-
)
39+
response = await self.async_request(method="GET", uri=uri)
3940
return response
4041
except Exception as exc:
4142
exception = {"datail": str(exc)}
@@ -49,7 +50,7 @@ async def get_currency(self, ccy_pair: str) -> Dict:
4950
response = self.currency(ccy_pair, pair, currencies)
5051
else:
5152
list_ccy = [key for key in self.mono_currencies.keys()]
52-
response = self.currency_error(list_ccy)
53+
response = self.currency_exception(list_ccy)
5354
return response
5455
except Exception as exc:
5556
exception = {"detail": str(exc)}
@@ -60,9 +61,7 @@ async def get_client_info(self) -> Dict:
6061
uri = self.mono_client_info_uri
6162
token = self.token
6263
headers = {"X-Token": token}
63-
response = await self.async_request(
64-
uri=uri, headers=headers, data=None, method="GET"
65-
)
64+
response = await self.async_request(method="GET", uri=uri, headers=headers)
6665
return response
6766
except Exception as exc:
6867
exception = {"detail": str(exc)}
@@ -86,7 +85,7 @@ async def get_statement(self, period: int) -> Dict:
8685
headers = {"X-Token": token}
8786
time_delta = self.date(period).get("time_delta")
8887
response = await self.async_request(
89-
uri=f"{uri}{time_delta}/", headers=headers, data=None, method="GET"
88+
method="GET", uri=f"{uri}{time_delta}/", headers=headers
9089
)
9190
return response
9291
except Exception as exc:
@@ -99,7 +98,10 @@ async def create_webhook(self, webhook: str) -> Dict:
9998
token = self.token
10099
headers = {"X-Token": token}
101100
response = await self.async_request(
102-
uri=uri, headers=headers, data=webhook, method="POST"
101+
method="POST",
102+
uri=uri,
103+
headers=headers,
104+
data=webhook,
103105
)
104106
return response
105107
except Exception as exc:

monobank_api_client/drf_mono/exceptions.py

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 50 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,53 @@
1+
from typing import Dict
12
from rest_framework.generics import GenericAPIView
23
from rest_framework.views import APIView
34
from rest_framework.response import Response
4-
from rest_framework import status
5-
65
from .models import Mono
76
from .serializers import (
87
MonoTokenSerializer,
98
WebhookSerializer,
109
MonoPeriodSerializer,
1110
MonoCurrencySerializer,
1211
)
13-
from .exceptions import (
14-
MonoTokenExistsException,
15-
MonoTokenDoesNotExistsException,
16-
)
17-
1812
from sync_mono.manager import SyncMonoManager
1913

2014

2115
class MonoView(GenericAPIView):
2216
serializer_class = MonoTokenSerializer
2317

24-
def post(self, request):
18+
def post(self, request) -> Dict:
2519
serializer = self.serializer_class(data=request.data)
2620
serializer.is_valid(raise_exception=True)
2721
_ = serializer.validated_data
2822
mono_obj = Mono.objects.filter(user=self.request.user)
29-
if mono_obj.first() is not None:
30-
raise MonoTokenExistsException
3123
mono_obj.create(mono_token=_["mono_token"], user=request.user)
32-
return Response(
33-
{"detail": "Monobank added successfully."}, status.HTTP_201_CREATED
34-
)
24+
mng = SyncMonoManager()
25+
response = mng.create_success()
26+
return Response(response)
3527

36-
def put(self, request):
28+
def put(self, request) -> Dict:
3729
serializer = self.serializer_class(data=request.data)
3830
serializer.is_valid(raise_exception=True)
3931
_ = serializer.validated_data
4032
mono_obj = Mono.objects.filter(user=request.user)
41-
if mono_obj.first() is not None:
42-
mono_obj.update(mono_token=_["mono_token"])
43-
return Response({"detail": "Monobank changed successfully."})
44-
raise MonoTokenDoesNotExistsException
33+
mono_obj.update(mono_token=_["mono_token"])
34+
mng = SyncMonoManager()
35+
response = mng.update_success()
36+
return Response(response)
4537

46-
def delete(self, request):
38+
def delete(self, request) -> Dict:
39+
mng = SyncMonoManager()
4740
mono_obj = Mono.objects.filter(user=request.user)
4841
if mono_obj.first() is not None:
4942
mono_obj.delete()
50-
return Response(status.HTTP_204_NO_CONTENT)
51-
raise MonoTokenDoesNotExistsException
43+
response = mng.delete_success()
44+
else:
45+
response = mng.does_not_exsists_exception()
46+
return Response(response)
5247

5348

5449
class CurrenciesListView(APIView):
55-
def get(self, request):
50+
def get(self, request) -> Dict:
5651
mng = SyncMonoManager()
5752
response = mng.get_currencies()
5853
return Response(response)
@@ -61,7 +56,7 @@ def get(self, request):
6156
class CurrencyView(GenericAPIView):
6257
serializer_class = MonoCurrencySerializer
6358

64-
def post(self, request):
59+
def post(self, request) -> Dict:
6560
serializer = self.serializer_class(data=request.data)
6661
serializer.is_valid(raise_exception=True)
6762
currency = serializer.validated_data
@@ -72,50 +67,58 @@ def post(self, request):
7267

7368

7469
class ClientInfoView(APIView):
75-
def get(self, request):
76-
mono_obj = Mono.objects.filter(user=request.user).first()
77-
if mono_obj is not None:
78-
mng = SyncMonoManager(mono_obj.mono_token)
70+
def get(self, request) -> Dict:
71+
mng = SyncMonoManager()
72+
mono = Mono.objects.filter(user=request.user).first()
73+
if mono is not None:
74+
mng.token = mono.mono_token
7975
response = mng.get_client_info()
80-
return Response(response)
81-
raise MonoTokenDoesNotExistsException
76+
else:
77+
response = mng.does_not_exsists_exception()
78+
return Response(response)
8279

8380

8481
class BalanceView(APIView):
85-
def get(self, request):
86-
mono_obj = Mono.objects.filter(user=request.user).first()
87-
if mono_obj is not None:
88-
mng = SyncMonoManager(mono_obj.mono_token)
82+
def get(self, request) -> Dict:
83+
mng = SyncMonoManager()
84+
mono = Mono.objects.filter(user=request.user).first()
85+
if mono is not None:
86+
mng.token = mono.mono_token
8987
response = mng.get_balance()
90-
return Response(response)
91-
raise MonoTokenDoesNotExistsException
88+
else:
89+
response = mng.does_not_exsists_exception()
90+
return Response(response)
9291

9392

9493
class StatementView(GenericAPIView):
9594
serializer_class = MonoPeriodSerializer
9695

97-
def post(self, request):
96+
def post(self, request) -> Dict:
9897
serializer = self.serializer_class(data=request.data)
9998
serializer.is_valid(raise_exception=True)
10099
_ = serializer.validated_data
101-
mono_obj = Mono.objects.filter(user=request.user).first()
102-
if mono_obj is not None:
103-
mng = SyncMonoManager(mono_obj.mono_token)
100+
mng = SyncMonoManager()
101+
mono = Mono.objects.filter(user=request.user).first()
102+
if mono is not None:
103+
mng.token = mono.mono_token
104104
response = mng.get_statement(_["period"])
105-
return Response(response)
106-
raise MonoTokenDoesNotExistsException
105+
else:
106+
response = mng.does_not_exsists_exception()
107+
return Response(response)
107108

108109

109110
class CreateWebhook(GenericAPIView):
110111
serializer_class = WebhookSerializer
111112

112-
def post(self, request):
113+
def post(self, request) -> Dict:
113114
serializer = self.serializer_class(data=request.data)
114115
serializer.is_valid(raise_exception=True)
115116
_ = serializer.validated_data
116-
mono_obj = Mono.objects.filter(user=request.user).first()
117-
if mono_obj is not None:
118-
mng = SyncMonoManager(mono_obj.mono_token)
117+
mng = SyncMonoManager()
118+
mono = Mono.objects.filter(user=request.user).first()
119+
if mono is not None:
120+
mng.token = mono.mono_token
119121
response = mng.create_webhook(_["webHookUrl"])
120-
return Response(response)
121-
raise MonoTokenDoesNotExistsException
122+
else:
123+
response = mng.does_not_exsists_exception()
124+
return Response(response)
Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,26 @@
11
from typing import Dict
2-
3-
from fastapi import Response, status
42
from sqlalchemy import insert, select, update, delete
53
from sqlalchemy.ext.asyncio import AsyncSession
6-
74
from fastapi_mono.models import MonoModel as mdl
85
from fastapi_mono.schemas import MonoSchema, MonoSchemaUpdate
9-
from fastapi_mono.exceptions import MonoException
6+
from async_mono.manager import AsyncMonoManager
107

118

129
async def create_mono(schema: MonoSchema, session: AsyncSession) -> Dict:
1310
try:
11+
mng = AsyncMonoManager()
1412
query = await session.execute(select(mdl).where(mdl.user_id == schema.user_id))
1513
if query.first() is not None:
16-
return MonoException.exists_error()
14+
return mng.exists_exception()
1715
else:
1816
new_obj = insert(mdl).values(**schema.model_dump())
1917
await session.execute(new_obj)
2018
await session.commit()
21-
response = Response(
22-
status_code=status.HTTP_201_CREATED,
23-
content="Mono-token added successfully.",
24-
)
19+
response = mng.create_success()
2520
return response
2621
except Exception as exc:
27-
error = {"detail": str(exc)}
28-
return error
22+
exception = {"detail": str(exc)}
23+
return exception
2924

3025

3126
async def read_mono(user: str, session: AsyncSession) -> Dict:
@@ -43,37 +38,33 @@ async def update_mono(
4338
user: str, schema: MonoSchemaUpdate, session: AsyncSession
4439
) -> Dict:
4540
try:
41+
mng = AsyncMonoManager()
4642
query = await session.execute(select(mdl).where(mdl.user_id == user))
4743
if query.first() is not None:
4844
query = await session.execute(
4945
update(mdl).values(**schema.model_dump()).where(mdl.user_id == user)
5046
)
5147
await session.commit()
52-
response = {
53-
"code": status.HTTP_200_OK,
54-
"detail": "Mono-token chanched successfully.",
55-
}
48+
response = mng.update_success()
5649
else:
57-
return MonoException.does_not_exsists()
50+
return mng.does_not_exsists_exception()
5851
return response
5952
except Exception as exc:
60-
error = {"detail": str(exc)}
61-
return error
53+
exception = {"detail": str(exc)}
54+
return exception
6255

6356

6457
async def delete_mono(user: str, session: AsyncSession) -> Dict:
6558
try:
59+
mng = AsyncMonoManager()
6660
query = await session.execute(select(mdl).where(mdl.user_id == user))
6761
if query.first() is not None:
6862
query = await session.execute(delete(mdl).where(mdl.user_id == user))
6963
await session.commit()
70-
response = {
71-
"code": status.HTTP_204_NO_CONTENT,
72-
"detail": "Mono-token deleted successfully.",
73-
}
64+
response = mng.delete_success()
7465
else:
75-
return MonoException.does_not_exsists()
66+
return mng.does_not_exsists_exception()
7667
return response
7768
except Exception as exc:
78-
error = {"detail": str(exc)}
79-
return error
69+
exception = {"detail": str(exc)}
70+
return exception

monobank_api_client/fastapi_mono/database.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1+
import os
2+
from dotenv import load_dotenv
13
from typing import AsyncGenerator
24
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
35
from sqlalchemy.orm import sessionmaker
46
from sqlalchemy.pool import NullPool
5-
import os
6-
from dotenv import load_dotenv
77

88

99
load_dotenv()

monobank_api_client/fastapi_mono/exceptions.py

Lines changed: 0 additions & 40 deletions
This file was deleted.

0 commit comments

Comments
 (0)