diff --git a/src/controller/mod.rs b/src/controller/mod.rs index 1ab4717468a05bb3f337a056e6d70648713189a2..e707497a3727886bf519e6a14ddfc27da373e956 100644 --- a/src/controller/mod.rs +++ b/src/controller/mod.rs @@ -15,6 +15,9 @@ pub fn route_stage() -> AdHoc { product::delete ], ) - .mount("/notification", routes![notification::subscribe]) + .mount( + "/notification", + routes![notification::subscribe, notification::unsubscribe], + ) }); } diff --git a/src/controller/notification.rs b/src/controller/notification.rs index a59531dd4e4d91e25251d6a670fc189a8bdca90d..9cc0c6a7fd2b5f0e9b1da1c71187a0c97cf4bb72 100644 --- a/src/controller/notification.rs +++ b/src/controller/notification.rs @@ -5,6 +5,8 @@ use crate::model::subscriber::Subscriber; use crate::service::notification::NotificationService; use bambangshop::Result; +use super::product; + #[post("/subscribe/<product_type>", data = "<subscriber>")] pub fn subscribe( product_type: &str, @@ -14,4 +16,12 @@ use bambangshop::Result; Ok(f) => Ok(Created::new("/".to_string()).body(Json::from(f))), Err(e) => Err(e), }; + } + + #[post("/unsubscribe/<product_type>?<url>")] + pub fn unsubscribe(product_type: &str, url: &str) -> Result<Json<Subscriber>> { + return match NotificationService::unsubscribe(product_type, url) { + Ok(f) => Ok(Json::from(f)), + Err(e) => Err(e), + }; } \ No newline at end of file