Page MenuHomePhabricator

D4894.id16152.diff
No OneTemporary

D4894.id16152.diff

diff --git a/services/tunnelbroker/rust-notifications/src/fcm.rs b/services/tunnelbroker/rust-notifications/src/fcm.rs
new file mode 100644
--- /dev/null
+++ b/services/tunnelbroker/rust-notifications/src/fcm.rs
@@ -0,0 +1,24 @@
+use anyhow::{anyhow, Result};
+use fcm::{Client, MessageBuilder, NotificationBuilder};
+
+pub async fn send_by_fcm_client(
+ fcm_api_key: &str,
+ device_registration_id: &str,
+ message_title: &str,
+ message_body: &str,
+) -> Result<u64> {
+ let client = Client::new();
+ let mut notification_builder = NotificationBuilder::new();
+ notification_builder.title(message_title);
+ notification_builder.body(message_body);
+
+ let notification = notification_builder.finalize();
+ let mut message_builder =
+ MessageBuilder::new(fcm_api_key, device_registration_id);
+ message_builder.notification(notification);
+ let result = client.send(message_builder.finalize()).await?;
+ match result.message_id {
+ Some(message_id) => Ok(message_id),
+ None => Err(anyhow!("FCM client returned an empty message id")),
+ }
+}
diff --git a/services/tunnelbroker/rust-notifications/src/lib.rs b/services/tunnelbroker/rust-notifications/src/lib.rs
--- a/services/tunnelbroker/rust-notifications/src/lib.rs
+++ b/services/tunnelbroker/rust-notifications/src/lib.rs
@@ -2,6 +2,7 @@
use lazy_static::lazy_static;
use tokio::runtime::Runtime;
pub mod apns;
+pub mod fcm;
#[cxx::bridge]
mod ffi {
@@ -14,6 +15,14 @@
message: &str,
sandbox: bool,
) -> Result<u16>;
+
+ #[cxx_name = "sendNotifToFCM"]
+ fn send_notif_to_fcm(
+ fcm_api_key: &str,
+ device_registration_id: &str,
+ message_title: &str,
+ message_body: &str,
+ ) -> Result<u64>;
}
}
@@ -38,3 +47,18 @@
))?;
Ok(result_code)
}
+
+pub fn send_notif_to_fcm(
+ fcm_api_key: &str,
+ device_registration_id: &str,
+ message_title: &str,
+ message_body: &str,
+) -> Result<u64> {
+ let message_id = RUNTIME.block_on(fcm::send_by_fcm_client(
+ fcm_api_key,
+ device_registration_id,
+ message_title,
+ message_body,
+ ))?;
+ Ok(message_id)
+}

File Metadata

Mime Type
text/plain
Expires
Sun, Sep 29, 10:21 AM (19 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2200056
Default Alt Text
D4894.id16152.diff (2 KB)

Event Timeline