use crate::{ client::Client, core::{ get::GetRequest, request::{Arguments, Request}, response::{PushSubscriptionGetResponse, PushSubscriptionSetResponse}, set::{SetObject, SetRequest}, }, Method, Set, TypeState, }; use super::{Keys, PushSubscription}; impl Client { pub fn push_subscription_create( &self, device_client_id: impl Into, url: impl Into, keys: Option, ) -> crate::Result { let mut request = self.build(); let create_req = request .set_push_subscription() .create() .device_client_id(device_client_id) .url(url); if let Some(keys) = keys { create_req.keys(keys); } let id = create_req.create_id().unwrap(); request .send_single::()? .created(&id) } pub fn push_subscription_verify( &self, id: &str, verification_code: impl Into, ) -> crate::Result> { let mut request = self.build(); request .set_push_subscription() .update(id) .verification_code(verification_code); request .send_single::()? .updated(id) } pub fn push_subscription_update_types( &self, id: &str, types: Option>, ) -> crate::Result> { let mut request = self.build(); request.set_push_subscription().update(id).types(types); request .send_single::()? .updated(id) } pub fn push_subscription_destroy(&self, id: &str) -> crate::Result<()> { let mut request = self.build(); request.set_push_subscription().destroy([id]); request .send_single::()? .destroyed(id) } } impl Request<'_> { pub fn get_push_subscription(&mut self) -> &mut GetRequest> { self.add_method_call( Method::GetPushSubscription, Arguments::push_get(self.params(Method::GetPushSubscription)), ) .push_get_mut() } pub fn send_get_push_subscription(self) -> crate::Result { self.send_single() } pub fn set_push_subscription(&mut self) -> &mut SetRequest> { self.add_method_call( Method::SetPushSubscription, Arguments::push_set(self.params(Method::SetPushSubscription)), ) .push_set_mut() } pub fn send_set_push_subscription(self) -> crate::Result { self.send_single() } }