diff options
Diffstat (limited to 'src/push/publisher.rs')
| -rw-r--r-- | src/push/publisher.rs | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/push/publisher.rs b/src/push/publisher.rs index 4092724..d6227a2 100644 --- a/src/push/publisher.rs +++ b/src/push/publisher.rs @@ -8,13 +8,14 @@ use web_push::{ use crate::error::failed::{Failed, ResultExt as _}; +#[async_trait::async_trait] pub trait Publish { - fn publish<M>( + async fn publish<'s, M>( &self, message: M, - signer: PartialVapidSignatureBuilder, - subscriptions: impl IntoIterator<Item = SubscriptionInfo> + Send, - ) -> impl Future<Output = Result<Vec<(SubscriptionInfo, WebPushError)>, Failed>> + Send + signer: &PartialVapidSignatureBuilder, + subscriptions: impl IntoIterator<Item = &'s SubscriptionInfo> + Send, + ) -> Result<Vec<(&'s SubscriptionInfo, WebPushError)>, Failed> where M: Serialize + Send + 'static; } @@ -50,13 +51,14 @@ impl Publisher { } } +#[async_trait::async_trait] impl Publish for Publisher { - async fn publish<M>( + async fn publish<'s, M>( &self, message: M, - signer: PartialVapidSignatureBuilder, - subscriptions: impl IntoIterator<Item = SubscriptionInfo> + Send, - ) -> Result<Vec<(SubscriptionInfo, WebPushError)>, Failed> + signer: &PartialVapidSignatureBuilder, + subscriptions: impl IntoIterator<Item = &'s SubscriptionInfo> + Send, + ) -> Result<Vec<(&'s SubscriptionInfo, WebPushError)>, Failed> where M: Serialize + Send + 'static, { @@ -65,7 +67,7 @@ impl Publish for Publisher { let messages: Vec<_> = subscriptions .into_iter() - .map(|sub| Self::prepare_message(&payload, &signer, &sub).map(|message| (sub, message))) + .map(|sub| Self::prepare_message(&payload, signer, sub).map(|message| (sub, message))) .try_collect()?; let deliveries = messages |
