# README
webpush-go
Web Push API Encryption with VAPID support.
go get -u github.com/sehogas/webpush-go
Example
For a full example, refer to the code in the example directory.
package main
import (
"encoding/json"
webpush "github.com/sehogas/webpush-go"
)
const URL_ICON_APP = "https://......../icon-512x512.png"
func main() {
// Decode subscription
s := &webpush.Subscription{}
json.Unmarshal([]byte("<YOUR_SUBSCRIPTION>"), s)
payload := struct {
notification struct { title, body, icon string }
}{ notification: { "Hello", "Test message", URL_ICON_APP }}
}
payloadJSON, err := json.Marshal(payload)
if err != nil {
// TODO: Handle error
}
// Send Notification
resp, err := webpush.SendNotification([]byte(payloadJSON), s, &webpush.Options{
Subscriber: "[email protected]",
VAPIDPublicKey: "<YOUR_VAPID_PUBLIC_KEY>",
VAPIDPrivateKey: "<YOUR_VAPID_PRIVATE_KEY>",
TTL: 30,
})
if err != nil {
// TODO: Handle error
}
defer resp.Body.Close()
}
Generating VAPID Keys
Use the helper method GenerateVAPIDKeys
to generate the VAPID key pair.
privateKey, publicKey, err := webpush.GenerateVAPIDKeys()
if err != nil {
// TODO: Handle error
}
Development
- Install Go 1.17+
go mod vendor
go test
For other language implementations visit:
# Packages
No description provided by the author
# Functions
GenerateVAPIDKeys will create a private and public VAPID key pair.
SendNotification sends a push notification to a subscription's endpoint Message Encryption for Web Push, and VAPID protocols.
# Constants
No description provided by the author
UrgencyHigh admits device state: low battery.
UrgencyLow requires device state: on either power or Wi-Fi.
UrgencyNormal excludes device state: low battery.
UrgencyVeryLow requires device state: on power and Wi-Fi.
# Variables
No description provided by the author
# Structs
Keys are the base64 encoded values from PushSubscription.getKey().
Options are config and extra params needed to send a notification.
Subscription represents a PushSubscription object from the Push API.
# Interfaces
HTTPClient is an interface for sending the notification HTTP request / testing.
# Type aliases
Urgency indicates to the push service how important a message is to the user.