1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-02-19 23:42:39 +00:00
comunicapiv3/src/api_data/server_config.rs

71 lines
2.9 KiB
Rust
Raw Normal View History

2021-02-15 17:03:25 +01:00
//! # Server configuration
//!
//! @author Pierre Hubert
use serde::Serialize;
2021-02-17 16:32:49 +01:00
use crate::constants::{conservation_policy, MIN_SUPPORTED_MOBILE_VERSION, password_policy};
2021-02-20 09:31:38 +01:00
use crate::data::config::conf;
2021-02-17 16:32:49 +01:00
#[derive(Serialize)]
struct PasswordPolicy {
allow_email_in_password: bool,
allow_name_in_password: bool,
min_password_length: u64,
min_number_upper_case_letters: u64,
min_number_lower_case_letters: u64,
min_number_digits: u64,
min_number_special_characters: u64,
min_categories_presence: u64,
}
2021-02-15 17:03:25 +01:00
#[derive(Serialize)]
struct DataConservationPolicy {
min_inactive_account_lifetime: u64,
min_notification_lifetime: u64,
min_comments_lifetime: u64,
min_posts_lifetime: u64,
min_conversation_messages_lifetime: u64,
min_likes_lifetime: u64,
}
#[derive(Serialize)]
pub struct ServerConfig {
min_supported_mobile_version: &'static str,
terms_url: &'static str,
privacy_policy_url: &'static str,
play_store_url: &'static str,
2021-02-20 09:44:34 +01:00
android_direct_download_url: String,
2021-02-17 16:32:49 +01:00
password_policy: PasswordPolicy,
2021-02-15 17:03:25 +01:00
data_conservation_policy: DataConservationPolicy,
}
impl ServerConfig {
pub fn new() -> Self {
ServerConfig {
min_supported_mobile_version: MIN_SUPPORTED_MOBILE_VERSION,
terms_url: &conf().terms_url,
privacy_policy_url: &conf().privacy_policy_url,
play_store_url: &conf().play_store_url,
2021-02-20 09:44:34 +01:00
android_direct_download_url: conf().android_direct_download_url.clone(),
2021-02-17 16:32:49 +01:00
password_policy: PasswordPolicy {
allow_email_in_password: password_policy::ALLOW_EMAIL_IN_PASSWORD,
allow_name_in_password: password_policy::ALLOW_NAME_IN_PASSWORD,
min_password_length: password_policy::MIN_PASSWORD_LENGTH,
min_number_upper_case_letters: password_policy::MIN_NUMBER_UPPERCASE_LETTER,
min_number_lower_case_letters: password_policy::MIN_NUMBER_LOWERCASE_LETTER,
min_number_digits: password_policy::MIN_NUMBER_DIGITS,
min_number_special_characters: password_policy::MIN_NUMBER_SPECIAL_CHARACTERS,
min_categories_presence: password_policy::MIN_CATEGORIES_PRESENCE,
},
2021-02-15 17:03:25 +01:00
data_conservation_policy: DataConservationPolicy {
min_inactive_account_lifetime: conservation_policy::MIN_INACTIVE_ACCOUNT_LIFETIME.as_secs(),
min_notification_lifetime: conservation_policy::MIN_NOTIFICATIONS_LIFETIME.as_secs(),
min_comments_lifetime: conservation_policy::MIN_COMMENTS_LIFETIME.as_secs(),
min_posts_lifetime: conservation_policy::MIN_POSTS_LIFETIME.as_secs(),
min_conversation_messages_lifetime: conservation_policy::MIN_CONVERSATION_MESSAGES_LIFETIME.as_secs(),
min_likes_lifetime: conservation_policy::MIN_LIKES_LIFETIME.as_secs(),
2021-02-17 16:32:49 +01:00
},
2021-02-15 17:03:25 +01:00
}
}
}