diff --git a/services/tunnelbroker/src/main.rs b/services/tunnelbroker/src/main.rs --- a/services/tunnelbroker/src/main.rs +++ b/services/tunnelbroker/src/main.rs @@ -90,12 +90,28 @@ }; let wns_config = CONFIG.wns_config.clone(); + let wns = match wns_config { + Some(config) => match WNSClient::new(&config) { + Ok(wns_client) => { + info!("WNS client created successfully"); + Some(wns_client) + } + Err(err) => { + error!("Error creating WNS client: {}", err); + None + } + }, + None => { + error!("WNS config is missing"); + None + } + }; let notif_client = NotifClient { apns, fcm, web_push, - wns: None, + wns, }; let grpc_server = grpc::run_server(db_client.clone(), &amqp_connection); diff --git a/services/tunnelbroker/src/notifs/wns/error.rs b/services/tunnelbroker/src/notifs/wns/error.rs new file mode 100644 --- /dev/null +++ b/services/tunnelbroker/src/notifs/wns/error.rs @@ -0,0 +1,6 @@ +use derive_more::{Display, Error, From}; + +#[derive(Debug, From, Display, Error)] +pub enum Error { + Reqwest(reqwest::Error), +} diff --git a/services/tunnelbroker/src/notifs/wns/mod.rs b/services/tunnelbroker/src/notifs/wns/mod.rs --- a/services/tunnelbroker/src/notifs/wns/mod.rs +++ b/services/tunnelbroker/src/notifs/wns/mod.rs @@ -1,6 +1,20 @@ +use crate::notifs::wns::config::WNSConfig; + pub mod config; +mod error; #[derive(Clone)] pub struct WNSClient { http_client: reqwest::Client, + config: WNSConfig, +} + +impl WNSClient { + pub fn new(config: &WNSConfig) -> Result { + let http_client = reqwest::Client::builder().build()?; + Ok(WNSClient { + http_client, + config: config.clone(), + }) + } }