28 lines
1.1 KiB
Python
28 lines
1.1 KiB
Python
import aiohttp
|
|
|
|
from .schemas import *
|
|
|
|
|
|
class BillingClient:
|
|
def __init__(self, api_key: str):
|
|
self.api_key = api_key
|
|
self.headers = {
|
|
'Authorization': f'Bearer {self.api_key}'
|
|
}
|
|
self.base_url = 'https://billing.denco.store'
|
|
|
|
async def _method(self, http_method, method, **kwargs):
|
|
async with aiohttp.ClientSession(headers=self.headers) as session:
|
|
async with session.request(http_method, self.base_url + method, **kwargs) as response:
|
|
return await response.json()
|
|
|
|
async def create(self, request: CreateBillRequestSchema) -> CreateBillingResponseSchema:
|
|
json_data = request.model_dump()
|
|
response = await self._method('POST', '/create', json=json_data)
|
|
return CreateBillingResponseSchema.model_validate(response)
|
|
|
|
async def notify_received(self, request: NotifyReceivedBillRequestSchema) -> NotifyReceivedBillResponseSchema:
|
|
json_data = request.model_dump()
|
|
response = await self._method('POST', '/notify-received', json=json_data)
|
|
return NotifyReceivedBillResponseSchema.model_validate(response)
|