66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
from dependency_injector.wiring import inject, Provide
|
|
from fastapi import APIRouter, Depends, Path, Request, BackgroundTasks
|
|
|
|
from ielts_be.controllers import IGradeController
|
|
from ielts_be.dtos.writing import WritingGradeTaskDTO
|
|
from ielts_be.middlewares import Authorized, IsAuthenticatedViaBearerToken
|
|
|
|
controller = "grade_controller"
|
|
grade_router = APIRouter()
|
|
|
|
|
|
@grade_router.post(
|
|
'/writing/{task}',
|
|
dependencies=[Depends(Authorized([IsAuthenticatedViaBearerToken]))]
|
|
)
|
|
@inject
|
|
async def grade_writing_task(
|
|
data: WritingGradeTaskDTO,
|
|
background_tasks: BackgroundTasks,
|
|
task: int = Path(..., ge=1, le=2),
|
|
grade_controller: IGradeController = Depends(Provide[controller])
|
|
):
|
|
return await grade_controller.grade_writing_task(task, data, background_tasks)
|
|
|
|
|
|
|
|
@grade_router.post(
|
|
'/speaking/{task}',
|
|
dependencies=[Depends(Authorized([IsAuthenticatedViaBearerToken]))]
|
|
)
|
|
@inject
|
|
async def grade_speaking_task(
|
|
request: Request,
|
|
background_tasks: BackgroundTasks,
|
|
task: int = Path(..., ge=1, le=3),
|
|
grade_controller: IGradeController = Depends(Provide[controller])
|
|
):
|
|
form = await request.form()
|
|
return await grade_controller.grade_speaking_task(task, form, background_tasks)
|
|
|
|
|
|
@grade_router.post(
|
|
'/summary',
|
|
dependencies=[Depends(Authorized([IsAuthenticatedViaBearerToken]))]
|
|
)
|
|
@inject
|
|
async def grading_summary(
|
|
request: Request,
|
|
grade_controller: IGradeController = Depends(Provide[controller])
|
|
):
|
|
data = await request.json()
|
|
return await grade_controller.grading_summary(data)
|
|
|
|
|
|
@grade_router.post(
|
|
'/short_answers',
|
|
dependencies=[Depends(Authorized([IsAuthenticatedViaBearerToken]))]
|
|
)
|
|
@inject
|
|
async def grade_short_answers(
|
|
request: Request,
|
|
grade_controller: IGradeController = Depends(Provide[controller])
|
|
):
|
|
data = await request.json()
|
|
return await grade_controller.grade_short_answers(data)
|