push

package module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 17, 2024 License: MIT Imports: 22 Imported by: 0

README

push-go

A Go implementation of the Web Push API for sending push notifications to web browsers.

Features

  • Implements the Web Push Protocol
  • Supports VAPID authentication
  • Handles encryption and payload encoding
  • Easy-to-use API for sending notifications

Installation

To install the package, use go get github.com/magaldima/push-go:

Documentation

Index

Constants

View Source
const MaxRecordSize uint32 = 4096

Variables

View Source
var ErrMaxPadExceeded = errors.New("payload has exceeded the maximum length")

Functions

func GenerateVAPIDKeys

func GenerateVAPIDKeys() (privateKey, publicKey string, err error)

GenerateVAPIDKeys will create a private and public VAPID key pair

func SendNotification

func SendNotification(message []byte, s *Subscription, options *Options) (*http.Response, error)

SendNotification calls SendNotificationWithContext with default context for backwards-compatibility

func SendNotificationWithContext

func SendNotificationWithContext(ctx context.Context, message []byte, s *Subscription, options *Options) (*http.Response, error)

SendNotificationWithContext sends a push notification to a subscription's endpoint Message Encryption for Web Push, and VAPID protocols. FOR MORE INFORMATION SEE RFC8291: https://datatracker.ietf.org/doc/rfc8291

Types

type Keys

type Keys struct {
	Auth   string `json:"auth"`
	P256dh string `json:"p256dh"`
}

Keys are the base64 encoded values from PushSubscription.getKey()

type Options

type Options struct {
	Transport       http.RoundTripper // Will replace with *http.Client by default if not included
	RecordSize      uint32            // Limit the record size
	Subscriber      string            // Sub in VAPID JWT token
	Topic           string            // Set the Topic header to collapse a pending messages (Optional)
	TTL             int               // Set the TTL on the endpoint POST request
	Urgency         Urgency           // Set the Urgency header to change a message priority (Optional)
	VAPIDPublicKey  string            // VAPID public key, passed in VAPID Authorization header
	VAPIDPrivateKey string            // VAPID private key, used to sign VAPID JWT token
	VapidExpiration time.Time         // optional expiration for VAPID JWT token (defaults to now + 12 hours)
}

Options are config and extra params needed to send a notification

type Subscription

type Subscription struct {
	Endpoint   string `json:"endpoint"`
	Keys       Keys   `json:"keys"`
	Expiration int32  `json:"expirationTime,omitempty"`
}

Subscription represents a PushSubscription object from the Push API

type Urgency

type Urgency string

Urgency indicates to the push service how important a message is to the user. This can be used by the push service to help conserve the battery life of a user's device by only waking up for important messages when battery is low.

const (
	// UrgencyVeryLow requires device state: on power and Wi-Fi
	UrgencyVeryLow Urgency = "very-low"
	// UrgencyLow requires device state: on either power or Wi-Fi
	UrgencyLow Urgency = "low"
	// UrgencyNormal excludes device state: low battery
	UrgencyNormal Urgency = "normal"
	// UrgencyHigh admits device state: low battery
	UrgencyHigh Urgency = "high"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL