| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | from sqlalchemy import nullfrom starlette.types import Messagefrom fastapi import FastAPI, Request, Dependsfrom starlette.middleware.cors import CORSMiddlewareimport base64import jsonimport datasetfrom datetime import datetime# from starlette.middleware.authentication import AuthenticationMiddlewarefrom app.crud.crud_user import userfrom app.api.api_v1.api import api_routerfrom app.core.config import settingsfrom app.api import depsfrom sqlalchemy.orm import Sessionapp = FastAPI(    title=settings.PROJECT_NAME, openapi_url=f"{settings.API_V1_STR}/openapi.json")# Set all CORS enabled origins# allow_origins=[str(origin) for origin in settings.BACKEND_CORS_ORIGINS],if settings.BACKEND_CORS_ORIGINS:    app.add_middleware(        CORSMiddleware,        # AuthenticationMiddleware,        allow_origins=["*"],        allow_credentials=True,        allow_methods=["*"],        allow_headers=["*"],    )# async def set_body(request: Request, body: bytes):#     async def receive() -> Message:#         return {"type": "http.request", "body": body}#     request._receive = receive # async def get_body(request: Request) -> bytes:#     body = await request.body()#     await set_body(request, body)#     return body # @app.middleware("http")# async def app_entry(request: Request, call_next,# ):#     db = dataset.connect(#                 'mysql://choozmo:pAssw0rd@db.ptt.cx:3306/arkcard?charset=utf8mb4'#                 )#     await set_body(request, await request.body())#     headers = str(request.headers).replace("\"","\'")#     try:#         userid = int(json.loads(base64.b64decode(request.headers['authorization'][7:].split('.')[1]).decode('utf-8'))['sub'])#     except:#         if( "/api/v1/line/collection/" or "/api/v1/line/receive/" or "/api/v1/line/shop/" in request.url.path):#             lineid = request.url.path.split("/")[-1]            #             sql = 'SELECT id, userid FROM users where userid =\'' + lineid + '\''#             try:#                 userid = int(db.query(sql).next()['id'])#             except:#                 userid = -1#     db.query('Insert into log (create_time, url_path, headers, userid) VALUE (\'' + str(datetime.now()) + '\' ,\'' + request.url.path + '\' , \"' + headers + '\" , '+ str(userid) + ')')#     response = await call_next(request)#     return responseapp.include_router(api_router, prefix=settings.API_V1_STR)
 |