From 6d230e57f5ac2eb4d7120a498a3f2e2089e465e9 Mon Sep 17 00:00:00 2001 From: Paul Makles Date: Thu, 10 Feb 2022 22:14:07 +0000 Subject: [PATCH] feat(web push): sub / unsub routes --- src/routes/push/subscribe.rs | 28 +++++++++++++++++++++------- src/routes/push/unsubscribe.rs | 20 ++++++++++++++++---- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/src/routes/push/subscribe.rs b/src/routes/push/subscribe.rs index aa582858..dc17f7cd 100644 --- a/src/routes/push/subscribe.rs +++ b/src/routes/push/subscribe.rs @@ -1,11 +1,25 @@ -use revolt_quark::{EmptyResponse, Result}; +use revolt_quark::{EmptyResponse, Error, Result}; use mongodb::bson::doc; -use rauth::entities::{Model, Session, WebPushSubscription}; -use rocket::serde::json::Json; +use rauth::{ + entities::{Model, Session, WebPushSubscription}, + logic::Auth, +}; +use rocket::{serde::json::Json, State}; -#[post("/subscribe"/*, data = ""*/)] -pub async fn req(/*mut session: Session, data: Json*/) -> Result -{ - todo!() +#[post("/subscribe", data = "")] +pub async fn req( + auth: &State, + mut session: Session, + data: Json, +) -> Result { + session.subscription = Some(data.into_inner()); + session + .save(&auth.db, None) + .await + .map(|_| EmptyResponse) + .map_err(|_| Error::DatabaseError { + operation: "save", + with: "session", + }) } diff --git a/src/routes/push/unsubscribe.rs b/src/routes/push/unsubscribe.rs index d3a99b66..00a3890c 100644 --- a/src/routes/push/unsubscribe.rs +++ b/src/routes/push/unsubscribe.rs @@ -1,9 +1,21 @@ -use revolt_quark::{EmptyResponse, Result}; +use revolt_quark::{EmptyResponse, Error, Result}; use mongodb::bson::doc; -use rauth::entities::{Model, Session}; +use rauth::{ + entities::{Model, Session}, + logic::Auth, +}; +use rocket::State; #[post("/unsubscribe")] -pub async fn req(/*mut session: Session*/) -> Result { - todo!() +pub async fn req(auth: &State, mut session: Session) -> Result { + session.subscription = None; + session + .save(&auth.db, None) + .await + .map(|_| EmptyResponse) + .map_err(|_| Error::DatabaseError { + operation: "save", + with: "session", + }) }