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