webpush

package
v0.10.1 Latest Latest
Warning

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

Go to latest
Published: Jun 16, 2023 License: GPL-3.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Name ...
	Name = "webpush"

	AttrTitle          = "title"
	AttrUserIDS        = "userIDS"
	AttrBody           = "body"
	AttrPublicKey      = "public_key"
	AttrPrivateKey     = "private_key"
	TopicPluginWebpush = "plugin.webpush"
)
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 New

func New() plugins.Plugable

New ...

func NewMessageParams

func NewMessageParams() m.Attributes

NewMessageParams ...

func NewSettings

func NewSettings() map[string]*m.Attribute

NewSettings ...

func SendNotification

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

SendNotification calls SendNotificationWithContext with default context for backwards-compatibility

func SendNotificationWithContext

func SendNotificationWithContext(ctx context.Context, message []byte, s *m.Subscription, options *Options) (code int, body []byte, err 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 EventAddWebPushSubscription

type EventAddWebPushSubscription struct {
	UserID       int64           `json:"user_id"`
	Subscription *m.Subscription `json:"subscription"`
}

EventAddWebPushSubscription ...

type EventGetWebPushPublicKey

type EventGetWebPushPublicKey struct {
	UserID int64 `json:"user_id,omitempty"`
}

EventGetWebPushPublicKey ...

type EventNewWebPushPublicKey

type EventNewWebPushPublicKey struct {
	UserID    int64  `json:"user_id,omitempty"`
	PublicKey string `json:"public_key"`
}

EventNewWebPushPublicKey ...

type Notification

type Notification struct {
	Title string `json:"title"`
}

type Options

type Options struct {
	Crawler         web.Crawler // 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
}

Options are config and extra params needed to send a notification

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