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§
- request_
builder - Functions used to send and consume push http messages. This module can be used to build custom clients.
Structs§
- Config
- Contains configuration parameters for base64 encoding
- Isahc
WebPush Client - An async client for sending the notification payload. This client is expensive to create, and should be reused.
- Partial
Vapid Signature Builder - A
VapidSignatureBuilderwithout VAPID subscription info. - Subscription
Info - Client info for sending the notification. Maps the values from browser’s subscription info JSON data (AKA pushSubscription object).
- Subscription
Keys - Encryption keys from the client.
- Vapid
Signature - A struct representing a VAPID signature. Should be generated using the VapidSignatureBuilder.
- Vapid
Signature Builder - A VAPID signature builder for generating an optional signature to the request. This encryption is required for payloads in all current and future browsers.
- WebPush
Message - Everything needed to send a push notification to the user.
- WebPush
Message Builder - The main class for creating a notification payload.
- WebPush
Payload - The push content payload, already in an encrypted form.
Enums§
- Content
Encoding - Content encoding profiles.
- Urgency
- WebPush
Error
Constants§
- BCRYPT
- Bcrypt character set
- BINHEX
- BinHex character set
- CRYPT
- As per
crypt(3)requirements - IMAP_
MUTF7 - IMAP modified UTF-7 requirements
- STANDARD
- Standard character set with padding.
- STANDARD_
NO_ PAD - Standard character set without padding.
- URL_
SAFE - URL-safe character set with padding
- URL_
SAFE_ NO_ PAD - URL-safe character set without padding
Traits§
- WebPush
Client - An async client for sending the notification payload. Other features, such as thread safety, may vary by implementation.