webpush

package
v0.11.0 Latest Latest
Warning

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

Go to latest
Published: Jun 23, 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"

	Version = "0.0.1"
)
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() m.Attributes

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