mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-11-22 13:29:21 +00:00
Register indpendent service token
This commit is contained in:
parent
1b48bcb3c9
commit
5d63cd8945
@ -78,7 +78,7 @@ impl ServerConfig {
|
|||||||
|
|
||||||
notifications: NotificationsConfig {
|
notifications: NotificationsConfig {
|
||||||
has_firebase: c.is_firebase_available(),
|
has_firebase: c.is_firebase_available(),
|
||||||
has_independent: conf().independent_push_service.is_some(),
|
has_independent: conf().is_independent_push_notifications_service_enabled(),
|
||||||
},
|
},
|
||||||
|
|
||||||
password_policy: PasswordPolicy {
|
password_policy: PasswordPolicy {
|
||||||
|
@ -4,9 +4,10 @@
|
|||||||
|
|
||||||
use crate::api_data::push_notifications_status_api::PushNotificationsStatusAPI;
|
use crate::api_data::push_notifications_status_api::PushNotificationsStatusAPI;
|
||||||
use crate::data::base_request_handler::BaseRequestHandler;
|
use crate::data::base_request_handler::BaseRequestHandler;
|
||||||
|
use crate::data::config::conf;
|
||||||
use crate::data::http_request_handler::HttpRequestHandler;
|
use crate::data::http_request_handler::HttpRequestHandler;
|
||||||
use crate::data::user_token::PushNotificationToken;
|
use crate::data::user_token::PushNotificationToken;
|
||||||
use crate::helpers::account_helper;
|
use crate::helpers::{account_helper, independent_push_notification_service_helper};
|
||||||
use crate::routes::RequestResult;
|
use crate::routes::RequestResult;
|
||||||
|
|
||||||
/// Get current push notifications status for a connection
|
/// Get current push notifications status for a connection
|
||||||
@ -20,8 +21,6 @@ pub fn get_status(r: &mut HttpRequestHandler) -> RequestResult {
|
|||||||
pub fn configure(r: &mut HttpRequestHandler) -> RequestResult {
|
pub fn configure(r: &mut HttpRequestHandler) -> RequestResult {
|
||||||
let status = r.post_string("status")?;
|
let status = r.post_string("status")?;
|
||||||
|
|
||||||
// TODO : check availability of each option
|
|
||||||
|
|
||||||
let status = match status.as_str() {
|
let status = match status.as_str() {
|
||||||
"disabled" => PushNotificationToken::NONE,
|
"disabled" => PushNotificationToken::NONE,
|
||||||
|
|
||||||
@ -34,7 +33,13 @@ pub fn configure(r: &mut HttpRequestHandler) -> RequestResult {
|
|||||||
}
|
}
|
||||||
|
|
||||||
"independent" => {
|
"independent" => {
|
||||||
unimplemented!();
|
if !conf().is_independent_push_notifications_service_enabled() {
|
||||||
|
return r.bad_request("Independent service is unavailable!".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
let token = independent_push_notification_service_helper::create_token()?;
|
||||||
|
|
||||||
|
PushNotificationToken::INDEPENDENT(token)
|
||||||
}
|
}
|
||||||
|
|
||||||
_ => {
|
_ => {
|
||||||
|
@ -154,6 +154,11 @@ impl Config {
|
|||||||
pub fn server_listen_address(&self) -> String {
|
pub fn server_listen_address(&self) -> String {
|
||||||
format!("{}:{}", self.listen_address, self.port)
|
format!("{}:{}", self.listen_address, self.port)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Check if independent push notifications service is enabled
|
||||||
|
pub fn is_independent_push_notifications_service_enabled(&self) -> bool {
|
||||||
|
self.independent_push_service.is_some()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get an instance of the configuration
|
/// Get an instance of the configuration
|
||||||
|
42
src/helpers/independent_push_notification_service_helper.rs
Normal file
42
src/helpers/independent_push_notification_service_helper.rs
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
//! # Independent push notification service
|
||||||
|
//!
|
||||||
|
//! @author Pierre Hubert
|
||||||
|
|
||||||
|
|
||||||
|
use actix_web::http::HeaderValue;
|
||||||
|
use reqwest::blocking::Client;
|
||||||
|
use reqwest::header::HeaderMap;
|
||||||
|
use serde::Deserialize;
|
||||||
|
|
||||||
|
use crate::data::config::{conf, IndependentPushService};
|
||||||
|
use crate::data::error::{ExecError, Res};
|
||||||
|
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
struct CreateTokenResult {
|
||||||
|
token: String
|
||||||
|
}
|
||||||
|
|
||||||
|
fn svc_conf() -> Res<&'static IndependentPushService> {
|
||||||
|
match &conf().independent_push_service {
|
||||||
|
Some(c) => Ok(c),
|
||||||
|
None => Err(ExecError::boxed_new("Missing push configuration!")),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_client() -> Res<Client> {
|
||||||
|
let mut headers = HeaderMap::new();
|
||||||
|
headers.insert("token", HeaderValue::from_str(&svc_conf()?.control_token.clone())?);
|
||||||
|
Ok(Client::builder().default_headers(headers).build()?)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Create a new client token
|
||||||
|
pub fn create_token() -> Res<String> {
|
||||||
|
let client = create_client()?
|
||||||
|
.get(&format!("{}{}", svc_conf()?.control_url, "create_client"))
|
||||||
|
.send()?;
|
||||||
|
|
||||||
|
|
||||||
|
let response: CreateTokenResult = client.json()?;
|
||||||
|
|
||||||
|
Ok(response.token)
|
||||||
|
}
|
@ -17,4 +17,5 @@ pub mod notifications_helper;
|
|||||||
pub mod webapp_helper;
|
pub mod webapp_helper;
|
||||||
pub mod requests_limit_helper;
|
pub mod requests_limit_helper;
|
||||||
pub mod events_helper;
|
pub mod events_helper;
|
||||||
pub mod calls_helper;
|
pub mod calls_helper;
|
||||||
|
pub mod independent_push_notification_service_helper;
|
Loading…
Reference in New Issue
Block a user