JustCaptain kod-buduschego
a46a0b3d44d05e2b1c3a7547bc0aff6f8f404145
Перейти к файлу
Код
main.py
import json

import requests
from litestar import Litestar, get, post

DB_URL: str = "database.json"
API_URL_PAYMENT_SERVICE: str = "http://127.0.0.1:9000/api/v1/"
API_KEY_PAYMENT_SERICE: str = "gdsf3rdxbcxvcx5$#dsdv"


def read_db(db_url: str) -> dict:
    with open(file=db_url, mode="r", encoding="utf-8") as file:
        data = json.load(fp=file)
    return data


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


@get(path="/api/v1/helth_service")
async def heealth_service_payment() -> dict | None:
    response = requests.get(url=API_URL_PAYMENT_SERVICE + "health")
    if response.status_code == 200:
        return {"response": response.json()}
    return None


@get(path="/api/v1/plans/active")
async def active_plan(user_id: int, plan: str | None) -> dict:
    data = read_db(DB_URL)
    for user_dict in data:
        if user_dict["user_id"] == user_id:
            body: dict = {
                "email": user_dict["email"],
                "first_name": user_dict["first_name"],
                "last_name": user_dict["last_name"],
                "price": 500,
            }
            if user_dict["active"]:
                return {"msg": "У вас подписка активна уже"}
            response = requests.post(
                url=f"{API_URL_PAYMENT_SERVICE}pay?api_key={API_KEY_PAYMENT_SERICE}",
                headers={
                    "accept": "application/json",
                    "Content-Type": "application/json",
                },
                data=json.dumps(body),
            )
            print(json.dumps(body))
            if response.status_code == 201:
                print(response.raw())
                response_data = response.json()
                print(response_data)
                if response_data.get("status_pay"):
                    return {"msg": "Оплата прошла успешно"}
                else:
                    return {
                        "msg": "Оплата по каким то причинам не прошла, проверьте баланс"
                    }
            return {"msg": "Ошибка работы сервиса оплаты"}
    return {"msg": "такого пользователя нет"}


app = Litestar(
    route_handlers=[health_serivce, heealth_service_payment, active_plan],
    tags=["MAIN: SUBSCRIPTION SERVICE"],
)


if __name__ == "__main__":
    import uvicorn

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