mirror of
https://github.com/harry0703/MoneyPrinterTurbo.git
synced 2025-11-26 03:44:59 +08:00
61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
"""Application implementation - ASGI."""
|
|
|
|
from fastapi import FastAPI, Request
|
|
from fastapi.exceptions import RequestValidationError
|
|
from fastapi.responses import JSONResponse
|
|
from loguru import logger
|
|
from fastapi.staticfiles import StaticFiles
|
|
|
|
from app.config import config
|
|
from app.models.exception import HttpException
|
|
from app.router import root_api_router
|
|
from app.utils import utils
|
|
|
|
|
|
def exception_handler(request: Request, e: HttpException):
|
|
return JSONResponse(
|
|
status_code=e.status_code,
|
|
content=utils.get_response(e.status_code, e.data, e.message),
|
|
)
|
|
|
|
|
|
def validation_exception_handler(request: Request, e: RequestValidationError):
|
|
return JSONResponse(
|
|
status_code=400,
|
|
content=utils.get_response(status=400, data=e.errors(), message='field required'),
|
|
)
|
|
|
|
|
|
def get_application() -> FastAPI:
|
|
"""Initialize FastAPI application.
|
|
|
|
Returns:
|
|
FastAPI: Application object instance.
|
|
|
|
"""
|
|
instance = FastAPI(
|
|
title=config.project_name,
|
|
description=config.project_description,
|
|
version=config.project_version,
|
|
debug=False,
|
|
)
|
|
instance.include_router(root_api_router)
|
|
instance.add_exception_handler(HttpException, exception_handler)
|
|
instance.add_exception_handler(RequestValidationError, validation_exception_handler)
|
|
return instance
|
|
|
|
|
|
app = get_application()
|
|
public_dir = utils.public_dir()
|
|
app.mount("/", StaticFiles(directory=public_dir, html=True), name="")
|
|
|
|
|
|
@app.on_event("shutdown")
|
|
def shutdown_event():
|
|
logger.info("shutdown event")
|
|
|
|
|
|
@app.on_event("startup")
|
|
def startup_event():
|
|
logger.info("startup event")
|