Fakultas Ilmu Komputer UI

Skip to content
Snippets Groups Projects
Commit 203d0145 authored by Ida Made Revindra Dikta Mahendra's avatar Ida Made Revindra Dikta Mahendra
Browse files

[CHORE]: Implement unsubscribe function in Notification service

parent 4dee73ec
Branches
No related tags found
No related merge requests found
......@@ -54,4 +54,41 @@ impl NotificationService {
))
}
}
pub fn unsubscribe(product_type: &str) -> Result<SubscriberRequest> {
let product_type_clone = String::from(product_type);
return thread::spawn(move || Self::unsubscribe_request(product_type_clone))
.join().unwrap();
}
#[tokio::main]
async fn unsubscribe_request(product_type: String) -> Result<SubscriberRequest> {
let product_type_upper: String = product_type.to_uppercase();
let product_type_str: &str = product_type_upper.as_str();
let notification_receiver_url: String = format!("{}/receive",
APP_CONFIG.get_instance_root_url());
let request_url: String = format!("{}/notification/unsubscribe/{}?url={}",
APP_CONFIG.get_publisher_root_url(), product_type_str, notification_receiver_url);
let request = REQWEST_CLIENT
.post(request_url.clone())
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.send().await;
log::warn_! ("Sent unsubscribe request to: {}", request_url);
return match request {
Ok (f) => match f.json::<SubscriberRequest>().await {
Ok(x) => Ok(x),
Err(_y) => Err (compose_error_response(
Status::NotFound,
String::from("Already unsubscribed to the topic.")
))
},
Err(e) => Err(compose_error_response(
Status::NotFound,
e.to_string()
))
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment