68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
from dependency_injector.wiring import Provide, inject
|
|
from fastapi import APIRouter, Depends, UploadFile, Request
|
|
|
|
from ielts_be.dtos.level import LevelExercisesDTO
|
|
from ielts_be.middlewares import Authorized, IsAuthenticatedViaBearerToken
|
|
from ielts_be.controllers import ILevelController
|
|
|
|
controller = "level_controller"
|
|
level_router = APIRouter()
|
|
|
|
|
|
@level_router.post(
|
|
'/',
|
|
dependencies=[Depends(Authorized([IsAuthenticatedViaBearerToken]))]
|
|
)
|
|
@inject
|
|
async def generate_exercises(
|
|
dto: LevelExercisesDTO,
|
|
level_controller: ILevelController = Depends(Provide[controller])
|
|
):
|
|
return await level_controller.generate_exercises(dto)
|
|
|
|
@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(
|
|
'/import/',
|
|
dependencies=[Depends(Authorized([IsAuthenticatedViaBearerToken]))]
|
|
)
|
|
@inject
|
|
async def import_level(
|
|
exercises: UploadFile,
|
|
solutions: UploadFile = None,
|
|
level_controller: ILevelController = Depends(Provide[controller])
|
|
):
|
|
return await level_controller.upload_level(exercises, solutions)
|
|
|
|
@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)
|