from dependency_injector.wiring import Provide, inject from fastapi import APIRouter, Depends, UploadFile, Request from app.middlewares import Authorized, IsAuthenticatedViaBearerToken from app.controllers.abc import ILevelController controller = "level_controller" level_router = APIRouter() @level_router.get( '/', dependencies=[Depends(Authorized([IsAuthenticatedViaBearerToken]))] ) @inject async def get_level_exam( level_controller: ILevelController = Depends(Provide[controller]) ): return await level_controller.get_level_exam() @level_router.get( '/utas', dependencies=[Depends(Authorized([IsAuthenticatedViaBearerToken]))] ) @inject async def get_level_utas( level_controller: ILevelController = Depends(Provide[controller]) ): return await level_controller.get_level_utas() @level_router.post( '/upload', dependencies=[Depends(Authorized([IsAuthenticatedViaBearerToken]))] ) @inject async def upload( file: UploadFile, level_controller: ILevelController = Depends(Provide[controller]) ): return await level_controller.upload_level(file) @level_router.post( '/custom', dependencies=[Depends(Authorized([IsAuthenticatedViaBearerToken]))] ) @inject async def custom_level( request: Request, level_controller: ILevelController = Depends(Provide[controller]) ): data = await request.json() return await level_controller.get_custom_level(data)