headless_lms_server/controllers/
mod.rs1#![allow(clippy::suspicious_else_formatting)]
10
11pub mod auth;
12pub mod cms;
13pub mod course_material;
14pub mod exercise_services;
15pub mod files;
16pub mod healthz;
17pub mod helpers;
18pub mod langs;
19pub mod main_frontend;
20pub mod mock_azure;
21pub mod other_domain_redirects;
22pub mod study_registry;
23pub mod tmc_server;
24
25use crate::domain::error::{ControllerError, ControllerErrorType};
26use actix_web::{
27 HttpRequest, HttpResponse, ResponseError,
28 web::{self, ServiceConfig},
29};
30use headless_lms_utils::{ApplicationConfiguration, prelude::*};
31use serde::{Deserialize, Serialize};
32#[cfg(feature = "ts_rs")]
33use ts_rs::TS;
34
35#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
37#[cfg_attr(feature = "ts_rs", derive(TS))]
38pub struct UploadResult {
39 pub url: String,
40}
41
42pub fn configure_controllers(
44 cfg: &mut ServiceConfig,
45 app_conf: web::Data<ApplicationConfiguration>,
46) {
47 cfg.service(web::scope("/course-material").configure(course_material::_add_routes))
48 .service(web::scope("/cms").configure(cms::_add_routes))
49 .service(web::scope("/files").configure(files::_add_routes))
50 .service(web::scope("/main-frontend").configure(main_frontend::_add_routes))
51 .service(web::scope("/auth").configure(auth::_add_routes))
52 .service(web::scope("/study-registry").configure(study_registry::_add_routes))
53 .service(web::scope("/exercise-services").configure(exercise_services::_add_routes))
54 .service(
55 web::scope("/other-domain-redirects").configure(other_domain_redirects::_add_routes),
56 )
57 .service(web::scope("/healthz").configure(healthz::_add_routes))
58 .service(web::scope("/langs").configure(langs::_add_routes))
59 .service(web::scope("/tmc-server").configure(tmc_server::_add_routes))
60 .default_service(web::to(not_found));
61 if app_conf.test_chatbot && app_conf.test_mode {
62 cfg.service(web::scope("/mock-azure").configure(mock_azure::_add_routes));
63 }
64}
65
66async fn not_found(req: HttpRequest) -> HttpResponse {
67 ControllerError::new(
68 ControllerErrorType::NotFound,
69 format!("No handler found for route '{}'", req.path()),
70 None,
71 )
72 .error_response()
73}