summaryrefslogtreecommitdiff
path: root/src/push/publisher.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/push/publisher.rs')
-rw-r--r--src/push/publisher.rs20
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