diff --git a/examples/certificate_client.rs b/examples/certificate_client.rs index f0fdad87..709ba03f 100644 --- a/examples/certificate_client.rs +++ b/examples/certificate_client.rs @@ -54,7 +54,7 @@ async fn main() -> Result<(), Box> { let client = new_client()?; let options = NotificationOptions { - apns_topic: topic.as_ref().map(|s| &**s), + apns_topic: topic.as_deref(), ..Default::default() }; diff --git a/examples/token_client.rs b/examples/token_client.rs index cbe5c859..32c3c0af 100644 --- a/examples/token_client.rs +++ b/examples/token_client.rs @@ -51,7 +51,7 @@ async fn main() -> Result<(), Box> { let client = Client::token(&mut private_key, key_id, team_id, endpoint).unwrap(); let options = NotificationOptions { - apns_topic: topic.as_ref().map(|s| &**s), + apns_topic: topic.as_deref(), ..Default::default() }; diff --git a/src/client.rs b/src/client.rs index d44b3cef..8339749c 100644 --- a/src/client.rs +++ b/src/client.rs @@ -149,7 +149,7 @@ impl Client { builder = builder.header("apns-expiration", apns_expiration.to_string().as_bytes()); } if let Some(ref apns_collapse_id) = payload.options.apns_collapse_id { - builder = builder.header("apns-collapse-id", apns_collapse_id.value.to_string().as_bytes()); + builder = builder.header("apns-collapse-id", apns_collapse_id.value.as_bytes()); } if let Some(apns_topic) = payload.options.apns_topic { builder = builder.header("apns-topic", apns_topic.as_bytes()); diff --git a/src/error.rs b/src/error.rs index 5f167ba2..a4ed649d 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,5 +1,4 @@ -//! Error and result module - +///! Error and result module use crate::{response::Response, signer::SignerError}; use std::io; use thiserror::Error; diff --git a/src/request/notification.rs b/src/request/notification.rs index 717c0717..354f556e 100644 --- a/src/request/notification.rs +++ b/src/request/notification.rs @@ -1,5 +1,4 @@ -//! The `aps` notification content builders - +///! The `aps` notification content builders mod default; mod options; mod web; diff --git a/src/request/notification/default.rs b/src/request/notification/default.rs index ab3834eb..0b07f1fe 100644 --- a/src/request/notification/default.rs +++ b/src/request/notification/default.rs @@ -3,7 +3,7 @@ use crate::request::payload::{APSAlert, Payload, APS}; use std::{borrow::Cow, collections::BTreeMap}; -#[derive(Serialize, Debug, Clone)] +#[derive(Deserialize, Serialize, Debug, Clone)] #[serde(rename_all = "kebab-case")] pub struct DefaultAlert<'a> { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/src/request/notification/options.rs b/src/request/notification/options.rs index d821c5aa..1fb7c260 100644 --- a/src/request/notification/options.rs +++ b/src/request/notification/options.rs @@ -20,7 +20,7 @@ impl<'a> CollapseId<'a> { } /// Headers to specify options to the notification. -#[derive(Debug, Clone, Default)] +#[derive(Debug, Default, Clone)] pub struct NotificationOptions<'a> { /// A canonical UUID that identifies the notification. If there is an error /// sending the notification, APNs uses this value to identify the diff --git a/src/request/notification/web.rs b/src/request/notification/web.rs index 2cc86bcd..a0ff341c 100644 --- a/src/request/notification/web.rs +++ b/src/request/notification/web.rs @@ -2,7 +2,7 @@ use crate::request::notification::{NotificationBuilder, NotificationOptions}; use crate::request::payload::{APSAlert, Payload, APS}; use std::collections::BTreeMap; -#[derive(Serialize, Debug, Clone)] +#[derive(Serialize, Deserialize, Debug, Clone)] #[serde(rename_all = "kebab-case")] pub struct WebPushAlert<'a> { pub title: &'a str, @@ -104,7 +104,7 @@ mod tests { title: "Hello", body: "world", }, - &vec!["arg1"], + &["arg1"], ) .build("device-token", Default::default()) .to_json_string() diff --git a/src/request/payload.rs b/src/request/payload.rs index dcb013e4..71c7c3f7 100644 --- a/src/request/payload.rs +++ b/src/request/payload.rs @@ -1,5 +1,4 @@ -//! Payload with `aps` and custom data - +///! Payload with `aps` and custom data use crate::error::Error; use crate::request::notification::{DefaultAlert, NotificationOptions, WebPushAlert}; use erased_serde::Serialize; @@ -91,7 +90,7 @@ impl<'a> Payload<'a> { } /// The pre-defined notification data. -#[derive(Serialize, Debug, Clone)] +#[derive(Serialize, Default, Debug, Clone)] #[serde(rename_all = "kebab-case")] #[allow(clippy::upper_case_acronyms)] pub struct APS<'a> {