Complete CarPass product flows
This commit is contained in:
@@ -15,6 +15,28 @@ class ApiClient:
|
||||
headers["X-Telegram-User-Id"] = str(telegram_id)
|
||||
return headers
|
||||
|
||||
async def request(
|
||||
self,
|
||||
method: str,
|
||||
path: str,
|
||||
*,
|
||||
telegram_id: int | None = None,
|
||||
json: dict[str, Any] | None = None,
|
||||
params: dict[str, Any] | None = None,
|
||||
) -> Any:
|
||||
async with httpx.AsyncClient(base_url=self.base_url, timeout=15) as client:
|
||||
response = await client.request(
|
||||
method,
|
||||
path,
|
||||
json=json,
|
||||
params=params,
|
||||
headers=self.headers(telegram_id),
|
||||
)
|
||||
response.raise_for_status()
|
||||
if response.status_code == 204:
|
||||
return None
|
||||
return response.json()
|
||||
|
||||
async def upsert_user(self, telegram_user: Any) -> dict[str, Any]:
|
||||
payload = {
|
||||
"telegram_id": telegram_user.id,
|
||||
@@ -50,3 +72,47 @@ class ApiClient:
|
||||
response = await client.get(f"/api/cars/{car_id}/stats", headers=self.headers(telegram_id))
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
async def create_fuel(self, telegram_id: int, payload: dict[str, Any]) -> dict[str, Any]:
|
||||
return await self.request("POST", "/api/fuel", telegram_id=telegram_id, json=payload)
|
||||
|
||||
async def create_service(self, telegram_id: int, payload: dict[str, Any]) -> dict[str, Any]:
|
||||
return await self.request("POST", "/api/service", telegram_id=telegram_id, json=payload)
|
||||
|
||||
async def create_expense(self, telegram_id: int, payload: dict[str, Any]) -> dict[str, Any]:
|
||||
return await self.request("POST", "/api/expenses", telegram_id=telegram_id, json=payload)
|
||||
|
||||
async def parse_record(self, telegram_id: int, text: str) -> dict[str, Any]:
|
||||
return await self.request("POST", "/api/parse/record", telegram_id=telegram_id, json={"text": text})
|
||||
|
||||
async def public_service_centers(self, telegram_id: int) -> list[dict[str, Any]]:
|
||||
return await self.request("GET", "/api/service-centers/public", telegram_id=telegram_id)
|
||||
|
||||
async def my_service_centers(self, telegram_id: int) -> list[dict[str, Any]]:
|
||||
return await self.request("GET", "/api/service-centers/my", telegram_id=telegram_id)
|
||||
|
||||
async def register_service_center(self, telegram_id: int, payload: dict[str, Any]) -> dict[str, Any]:
|
||||
return await self.request("POST", "/api/service-centers", telegram_id=telegram_id, json=payload)
|
||||
|
||||
async def pending_service_centers(self, telegram_id: int) -> list[dict[str, Any]]:
|
||||
return await self.request("GET", "/api/admin/service-centers/pending", telegram_id=telegram_id)
|
||||
|
||||
async def moderate_service_center(
|
||||
self,
|
||||
telegram_id: int,
|
||||
service_center_id: int,
|
||||
action: str,
|
||||
payload: dict[str, Any] | None = None,
|
||||
) -> dict[str, Any]:
|
||||
endpoint = {
|
||||
"approve": "verify",
|
||||
"reject": "reject",
|
||||
"suspend": "suspend",
|
||||
"changes": "request-changes",
|
||||
}[action]
|
||||
return await self.request(
|
||||
"POST",
|
||||
f"/api/admin/service-centers/{service_center_id}/{endpoint}",
|
||||
telegram_id=telegram_id,
|
||||
json=payload or {},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user