Crate web_push

source ·
Expand description

Web Push

A library for creating and sending push notifications to a web browser. For content payload encryption it uses RFC8188. The client is asynchronous and can run on any executor. An optional hyper based client is available with the feature hyper-client.

Example

let endpoint = "https://updates.push.services.mozilla.com/wpush/v1/...";
let p256dh = "key_from_browser_as_base64";
let auth = "auth_from_browser_as_base64";

//You would likely get this by deserializing a browser `pushSubscription` object.  
let subscription_info = SubscriptionInfo::new(
    endpoint,
    p256dh,
    auth
);

//Read signing material for payload.
let file = File::open("private.pem").unwrap();
let mut sig_builder = VapidSignatureBuilder::from_pem(file, &subscription_info)?.build()?;

//Now add payload and encrypt.
let mut builder = WebPushMessageBuilder::new(&subscription_info);
let content = "Encrypted payload to be sent in the notification".as_bytes();
builder.set_payload(ContentEncoding::Aes128Gcm, content);
builder.set_vapid_signature(sig_builder);

let client = IsahcWebPushClient::new()?;

//Finally, send the notification!
client.send(builder.build()?).await?;

Modules

  • Functions used to send and consume push http messages. This module can be used to build custom clients.

Structs

Enums

Constants

Traits

  • An async client for sending the notification payload. Other features, such as thread safety, may vary by implementation.