JustCaptain kod-buduschego
253504b541f7f2df21287b4928c87fb803c0792f
Перейти к файлу
Код
main.py
import datetime
import random
from dataclasses import dataclass

from litestar import Litestar, get, post

API_URL_SUBSCRIPTION_SERVICE: str = "http://127.0.0.1/api/v1/"
API_KEY: str = "gdsf3rdxbcxvcx5$#dsdv"


@get("/api/v1/health/")
async def health_serivce() -> dict:
    return {"status": True}


"""
    "user_id": 3,
    "email": "michael.brown3@example.com",
    "first_name": "Michael",
    "last_name": "Brown",
    "plan": "BASIC",
    "active": false,
    "country": "Spain",
    "role": "USER"
"""


@dataclass
class UserPaySchema:
    email: str
    first_name: str
    last_name: str
    price: float


@dataclass
class ResponsePayStatus:
    status_pay: bool
    time: str
    email: str
    first_name: str
    last_name: str
    price: float


@post("/api/v1/pay")
def pay_service(api_key: str, data: UserPaySchema) -> ResponsePayStatus | None:
    """Симуляиция запроса в банк"""
    if api_key == API_KEY:
        if random.choice([False, True]):
            response = ResponsePayStatus(
                status_pay=True,
                time=str(datetime.datetime.now()),
                email=data.email,
                first_name=data.first_name,
                last_name=data.last_name,
                price=data.price,
            )
            return response
        response = ResponsePayStatus(
            status_pay=False,
            time=str(datetime.datetime.now()),
            email=data.email,
            first_name=data.first_name,
            last_name=data.last_name,
            price=data.price,
        )
        return response
    return None


app = Litestar(route_handlers=[health_serivce, pay_service], tags=["PAYMENT_SERVICE"])


if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app="main:app", host="127.0.0.1", port=9000, reload=True)