mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-11-25 23:09:22 +00:00
Create server config route
This commit is contained in:
parent
fa230bdef8
commit
376bd0477e
@ -7,6 +7,7 @@
|
|||||||
//! ## Author
|
//! ## Author
|
||||||
//! Pierre Hubert
|
//! Pierre Hubert
|
||||||
|
|
||||||
|
pub mod server_config;
|
||||||
pub mod http_error;
|
pub mod http_error;
|
||||||
pub mod login_success;
|
pub mod login_success;
|
||||||
pub mod current_user_id;
|
pub mod current_user_id;
|
||||||
|
35
src/api_data/server_config.rs
Normal file
35
src/api_data/server_config.rs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
//! # Server configuration
|
||||||
|
//!
|
||||||
|
//! @author Pierre Hubert
|
||||||
|
use serde::Serialize;
|
||||||
|
use crate::constants::conservation_policy;
|
||||||
|
|
||||||
|
#[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 {
|
||||||
|
data_conservation_policy: DataConservationPolicy,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ServerConfig {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
ServerConfig {
|
||||||
|
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(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -59,6 +59,29 @@ pub mod database_tables_names {
|
|||||||
pub const NOTIFICATIONS_TABLE: &str = "comunic_notifications";
|
pub const NOTIFICATIONS_TABLE: &str = "comunic_notifications";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Minimal conversation policy
|
||||||
|
pub mod conservation_policy {
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
/// Minimum lifetime for inactive account (3 months)
|
||||||
|
pub const MIN_INACTIVE_ACCOUNT_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 30 * 3);
|
||||||
|
|
||||||
|
/// Minimum lifetime for notifications (7 days)
|
||||||
|
pub const MIN_NOTIFICATIONS_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 7);
|
||||||
|
|
||||||
|
/// Minimum lifetime for comments (1 month)
|
||||||
|
pub const MIN_COMMENTS_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 30);
|
||||||
|
|
||||||
|
/// Minimum lifetime for posts (1 month)
|
||||||
|
pub const MIN_POSTS_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 30);
|
||||||
|
|
||||||
|
/// Minimum conversation messages lifetime (15 days)
|
||||||
|
pub const MIN_CONVERSATION_MESSAGES_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 15);
|
||||||
|
|
||||||
|
/// Minimum likes lifetime (1 month)
|
||||||
|
pub const MIN_LIKES_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 30);
|
||||||
|
}
|
||||||
|
|
||||||
/// WebSocket access token lifetime, in seconds
|
/// WebSocket access token lifetime, in seconds
|
||||||
pub const WS_ACCESS_TOKEN_LIFETIME: u64 = 10;
|
pub const WS_ACCESS_TOKEN_LIFETIME: u64 = 10;
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
use crate::api_data::server_config::ServerConfig;
|
||||||
use crate::data::base_request_handler::BaseRequestHandler;
|
use crate::data::base_request_handler::BaseRequestHandler;
|
||||||
use crate::data::http_request_handler::HttpRequestHandler;
|
use crate::data::http_request_handler::HttpRequestHandler;
|
||||||
use crate::routes::RequestResult;
|
use crate::routes::RequestResult;
|
||||||
@ -9,4 +10,9 @@ use crate::routes::RequestResult;
|
|||||||
/// Root server index
|
/// Root server index
|
||||||
pub fn main_index(request: &mut HttpRequestHandler) -> RequestResult {
|
pub fn main_index(request: &mut HttpRequestHandler) -> RequestResult {
|
||||||
request.success("Comunic API server V3. (c) Pierre Hubert 2020")
|
request.success("Comunic API server V3. (c) Pierre Hubert 2020")
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get server configuration
|
||||||
|
pub fn get_config(request: &mut HttpRequestHandler) -> RequestResult {
|
||||||
|
request.set_response(ServerConfig::new())
|
||||||
}
|
}
|
@ -127,6 +127,7 @@ pub fn get_routes() -> Vec<Route> {
|
|||||||
vec![
|
vec![
|
||||||
// Server meta routes
|
// Server meta routes
|
||||||
Route::get_without_login("/", Box::new(server_controller::main_index)),
|
Route::get_without_login("/", Box::new(server_controller::main_index)),
|
||||||
|
Route::post_without_login("/server/config", Box::new(server_controller::get_config)),
|
||||||
|
|
||||||
// Main user WebSocket
|
// Main user WebSocket
|
||||||
Route::post("/ws/token", Box::new(user_ws_controller::get_token)),
|
Route::post("/ws/token", Box::new(user_ws_controller::get_token)),
|
||||||
|
Loading…
Reference in New Issue
Block a user