From e4f886586304fd93d871c9c0f61c8a1d69374f16 Mon Sep 17 00:00:00 2001
From: vissutagunawan <vglim3653@gmail.com>
Date: Thu, 27 Mar 2025 10:25:07 +0700
Subject: [PATCH] Implement the receive function in Notification controller.

---
 src/controller/mod.rs          |  3 ++-
 src/controller/notification.rs |  8 ++++++++
 src/service/notification.rs    | 10 +++++-----
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/controller/mod.rs b/src/controller/mod.rs
index 80195c4..b1d8df3 100644
--- a/src/controller/mod.rs
+++ b/src/controller/mod.rs
@@ -5,6 +5,7 @@ use rocket::fairing::AdHoc;
 pub fn route_stage() -> AdHoc {
     return AdHoc::on_ignite("Initializing controller routes...", |rocket| async {
         rocket
-            .mount("/", routes![notification::subscribe, notification::unsubscribe])
+            .mount("/", routes![notification::subscribe, notification::unsubscribe,
+            notification::receive])
     });
 }
diff --git a/src/controller/notification.rs b/src/controller/notification.rs
index f511370..06ab9da 100644
--- a/src/controller/notification.rs
+++ b/src/controller/notification.rs
@@ -19,4 +19,12 @@ pub fn unsubscribe(product_type: &str) -> Result<Json<SubscriberRequest>> {
         Ok(f) => Ok(Json::from(f)),
         Err(e) => Err(e),
     };
+}
+
+#[post("/receive", data = "<notification>")]
+pub fn receive(notification: Json<Notification>) -> Result<Json<Notification>> {
+    return match NotificationService::receive_notification(notification.into_inner()) {
+        Ok(f) => Ok(Json::from(f)),
+        Err(e) => Err(e),
+    };
 }
\ No newline at end of file
diff --git a/src/service/notification.rs b/src/service/notification.rs
index fe2c5ed..35ae56b 100644
--- a/src/service/notification.rs
+++ b/src/service/notification.rs
@@ -15,10 +15,10 @@ use rocket::http::Status;
     async fn subscribe_request(product_type: String) -> Result<SubscriberRequest> {
         let product_type_upper = product_type.to_uppercase();
         let product_type_str = product_type_upper.as_str();
-        let notification_reciever_url = format!("{}/recieve", APP_CONFIG.get_instance_root_url());
+        let notification_receiver_url = format!("{}/receive", APP_CONFIG.get_instance_root_url());
         let payload = SubscriberRequest {
             name: APP_CONFIG.get_instance_name().to_string(),
-            url: notification_reciever_url,
+            url: notification_receiver_url,
         };
         let request_url = format!(
             "{}/notification/subscribe/{}",
@@ -52,13 +52,13 @@ use rocket::http::Status;
     async fn unsubscribe_request(product_type: String) -> Result<SubscriberRequest> {
         let product_type_upper = product_type.to_uppercase();
         let product_type_str = product_type_upper.as_str();
-        let notification_reciever_url = format!("{}/recieve", APP_CONFIG.get_instance_root_url());
+        let notification_receiver_url = format!("{}/receive", APP_CONFIG.get_instance_root_url());
 
         let request_url = format!(
             "{}/notification/unsubscribe/{}?url={}",
             APP_CONFIG.get_instance_root_url(),
             product_type_str,
-            notification_reciever_url
+            notification_receiver_url
         );
         let request = REQWEST_CLIENT
             .post(request_url.clone())
@@ -87,7 +87,7 @@ use rocket::http::Status;
             .unwrap();
     }
 
-    pub fn recieve_notification(payload: Notification) -> Result<Notification> {
+    pub fn receive_notification(payload: Notification) -> Result<Notification> {
         let subscriber_result = NotificationRepository::add(payload.clone());
         return Ok(subscriber_result);
     }
-- 
GitLab