torrust_index_backend/web/api/v1/contexts/settings/
handlers.rs

1//! API handlers for the the [`category`](crate::web::api::v1::contexts::category) API
2//! context.
3use std::sync::Arc;
4
5use axum::extract::State;
6use axum::response::{IntoResponse, Json, Response};
7
8use crate::common::AppData;
9use crate::web::api::v1::extractors::bearer_token::Extract;
10use crate::web::api::v1::responses;
11
12/// Get all settings.
13///
14/// # Errors
15///
16/// This function will return an error if the user does not have permission to
17/// view all the settings.
18#[allow(clippy::unused_async)]
19pub async fn get_all_handler(State(app_data): State<Arc<AppData>>, Extract(maybe_bearer_token): Extract) -> Response {
20    let user_id = match app_data.auth.get_user_id_from_bearer_token(&maybe_bearer_token).await {
21        Ok(user_id) => user_id,
22        Err(error) => return error.into_response(),
23    };
24
25    let all_settings = match app_data.settings_service.get_all(&user_id).await {
26        Ok(all_settings) => all_settings,
27        Err(error) => return error.into_response(),
28    };
29
30    Json(responses::OkResponseData { data: all_settings }).into_response()
31}
32
33/// Get public Settings.
34#[allow(clippy::unused_async)]
35pub async fn get_public_handler(State(app_data): State<Arc<AppData>>) -> Response {
36    let public_settings = app_data.settings_service.get_public().await;
37
38    Json(responses::OkResponseData { data: public_settings }).into_response()
39}
40
41/// Get website name.
42#[allow(clippy::unused_async)]
43pub async fn get_site_name_handler(State(app_data): State<Arc<AppData>>) -> Response {
44    let site_name = app_data.settings_service.get_site_name().await;
45
46    Json(responses::OkResponseData { data: site_name }).into_response()
47}