add router for get last donats for tips

This commit is contained in:
harold 2025-07-14 13:58:52 +05:00
parent 4df2c34889
commit e87c1e5718
4 changed files with 65 additions and 11 deletions

View File

@ -1,10 +1,13 @@
from typing import Literal, Annotated
from fastapi import APIRouter, Depends
from fastapi.security import HTTPAuthorizationCredentials
from pydantic import PositiveInt
from src.core.api_tips_integrate.constants import DONATES_SUM_PERIODS
from src.core.api_tips_integrate.schemas import CreateTipSchema
from src.core.api_tips_integrate.service import create_payment_link_for_tip_service
from src.core.api_tips_integrate.service import create_payment_link_for_tip_service, \
create_payment_link_for_donate_service
from src.core.common.dependencies import http_bearer, data_from_token
from src.core.common.schemas import TokenPayloadSchema, PaymentLinkSchema
@ -17,9 +20,15 @@ router = APIRouter(
path="/last-payments"
)
async def get_last_donates(
token: Annotated[str, Depends(http_bearer)],
token: Annotated[HTTPAuthorizationCredentials, Depends(http_bearer)],
page: PositiveInt = 1,
limit: PositiveInt = 100,
):
pass
return await create_payment_link_for_donate_service(
token=token.credentials,
page=page,
limit=limit,
)
@router.get(

View File

@ -1,3 +1,5 @@
from datetime import datetime
from pydantic import Field, BaseModel
@ -14,4 +16,24 @@ class CreateTipSchema(BaseModel):
from_user: str | None = Field(
default=None,
description="User who sent the tip",
)
)
class DonationSchema(BaseModel):
id: int
widget_id: int
order_id: str = Field(..., alias="order_id")
status: str
text: str
amount: float
donat_user: str = Field(..., alias="donat_user")
accepted_time: datetime
show_name: bool
show_text: bool
play_content: bool
showed_time: datetime
paid_time: datetime
class AllDonatesSchema(BaseModel):
donates: list[DonationSchema]

View File

@ -1,6 +1,6 @@
import httpx
from src.core.api_tips_integrate.schemas import CreateTipSchema
from src.core.api_tips_integrate.schemas import CreateTipSchema, AllDonatesSchema, DonationSchema
from src.core.common.constants import DH_ACCOUNTS_API_URL, DH_WIDGETS_API_URL
from src.core.common.schemas import TokenPayloadSchema, UserInfoSchema, PaymentLinkSchema
@ -48,8 +48,6 @@ async def create_payment_link_for_tip_service(
return payment_link_schema
async def get_last_donates_by_login():
pass
@ -58,5 +56,30 @@ async def get_summary_donates_for_period():
pass
async def create_payment_link_for_donate():
pass
async def create_payment_link_for_donate_service(
token: str,
page: int = 1,
limit: int = 10,
) -> AllDonatesSchema:
headers = {
"accept": "application/json",
"Authorization": f"Bearer {token}"
}
params = {
"page": page,
"limit": limit
}
async with httpx.AsyncClient() as client:
response = await client.get(
url=DH_WIDGETS_API_URL + "donat",
headers=headers,
params=params
)
response.raise_for_status()
data = response.json()
return AllDonatesSchema(
donates=[DonationSchema(**item) for item in data]
)

View File

@ -1,7 +1,7 @@
from typing import Annotated
from fastapi import Depends
from fastapi.security import HTTPBearer
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from src.core.common.jwt import decode_token_from_base64
from src.core.common.schemas import TokenPayloadSchema
@ -11,7 +11,7 @@ http_bearer = HTTPBearer()
async def data_from_token(
token: Annotated[str, Depends(http_bearer)]
token: Annotated[HTTPAuthorizationCredentials, Depends(http_bearer)]
) -> TokenPayloadSchema:
return decode_token_from_base64(
token=token,