headless_lms_server/controllers/course_material/
mod.rs

1/*!
2Handlers for HTTP requests to `/api/v0/course-material`.
3
4This documents all endpoints. Select a module below for a category.
5
6*/
7
8pub mod chapters;
9pub mod chatbot;
10pub mod code_giveaways;
11pub mod course_instances;
12pub mod course_modules;
13pub mod courses;
14pub mod exams;
15pub mod exercises;
16pub mod glossary;
17pub mod oembed;
18pub mod organizations;
19pub mod page_audio_files;
20pub mod pages;
21pub mod proposed_edits;
22pub mod user_details;
23
24use actix_web::web::{self, ServiceConfig};
25use utoipa::OpenApi;
26
27#[derive(OpenApi)]
28#[openapi(
29    nest(
30        (path = "/chapters", api = chapters::CourseMaterialChaptersApiDoc),
31        (path = "/chatbot", api = chatbot::CourseMaterialChatbotApiDoc),
32        (path = "/code-giveaways", api = code_giveaways::CourseMaterialCodeGiveawaysApiDoc),
33        (path = "/course-instances", api = course_instances::CourseMaterialCourseInstancesApiDoc),
34        (path = "/course-modules", api = course_modules::CourseMaterialCourseModulesApiDoc),
35        (path = "/courses", api = courses::CourseMaterialCoursesApiDoc),
36        (path = "/exams", api = exams::CourseMaterialExamsApiDoc),
37        (path = "/exercises", api = exercises::CourseMaterialExercisesApiDoc),
38        (path = "/acronyms", api = glossary::CourseMaterialGlossaryApiDoc),
39        (path = "/oembed", api = oembed::CourseMaterialOembedApiDoc),
40        (path = "/organizations", api = organizations::CourseMaterialOrganizationsApiDoc),
41        (path = "/page_audio", api = page_audio_files::CourseMaterialPageAudioApiDoc),
42        (path = "/pages", api = pages::CourseMaterialPagesApiDoc),
43        (path = "/proposed-edits", api = proposed_edits::CourseMaterialProposedEditsApiDoc),
44        (path = "/user-details", api = user_details::CourseMaterialUserDetailsApiDoc)
45    )
46)]
47pub struct CourseMaterialRoutesApiDoc;
48
49/// Add controllers from all the submodules.
50pub fn _add_routes(cfg: &mut ServiceConfig) {
51    cfg.service(web::scope("/courses").configure(courses::_add_routes))
52        .service(web::scope("/exercises").configure(exercises::_add_routes))
53        .service(web::scope("/pages").configure(pages::_add_routes))
54        .service(web::scope("/chapters").configure(chapters::_add_routes))
55        .service(web::scope("/course-instances").configure(course_instances::_add_routes))
56        .service(web::scope("/proposed-edits").configure(proposed_edits::_add_routes))
57        .service(web::scope("/exams").configure(exams::_add_routes))
58        .service(web::scope("/acronyms").configure(glossary::_add_routes))
59        .service(web::scope("/oembed").configure(oembed::_add_routes))
60        .service(web::scope("/course-modules").configure(course_modules::_add_routes))
61        .service(web::scope("/page_audio").configure(page_audio_files::_add_routes))
62        .service(web::scope("/chatbot").configure(chatbot::_add_routes))
63        .service(web::scope("/code-giveaways").configure(code_giveaways::_add_routes))
64        .service(web::scope("/user-details").configure(user_details::_add_routes))
65        .service(web::scope("/organizations").configure(organizations::_add_routes));
66}