summaryrefslogtreecommitdiff
path: root/vendor/github.com/SherClockHolmes/webpush-go/README.md
diff options
context:
space:
mode:
authorLibravatar Vyr Cossont <VyrCossont@users.noreply.github.com>2025-01-23 16:47:30 -0800
committerLibravatar GitHub <noreply@github.com>2025-01-23 16:47:30 -0800
commit5b765d734ee70f0a8a0790444d60969a727567f8 (patch)
treef76e05a6e5b22df17160be595c40e964bdbe5f22 /vendor/github.com/SherClockHolmes/webpush-go/README.md
parent[feature] Serve bot accounts over AP as Service instead of Person (#3672) (diff)
downloadgotosocial-5b765d734ee70f0a8a0790444d60969a727567f8.tar.xz
[feature] Push notifications (#3587)
* Update push subscription API model to be Mastodon 4.0 compatible * Add webpush-go dependency # Conflicts: # go.sum * Single-row table for storing instance's VAPID key pair * Generate VAPID key pair during startup * Add VAPID public key to instance info API * Return VAPID public key when registering an app * Store Web Push subscriptions in DB * Add Web Push sender (similar to email sender) * Add no-op push senders to most processor tests * Test Web Push notifications from workers * Delete Web Push subscriptions when account is deleted * Implement push subscription API * Linter fixes * Update Swagger * Fix enum to int migration * Fix GetVAPIDKeyPair * Create web push subscriptions table with indexes * Log Web Push server error messages * Send instance URL as Web Push JWT subject * Accept any 2xx code as a success * Fix malformed VAPID sub claim * Use packed notification flags * Remove unused date columns * Add notification type for update notifications Not used yet * Make GetVAPIDKeyPair idempotent and remove PutVAPIDKeyPair * Post-rebase fixes * go mod tidy * Special-case 400 errors other than 408/429 Most client errors should remove the subscription. * Improve titles, trim body to reasonable length * Disallow cleartext HTTP for Web Push servers * Fix lint * Remove redundant index on unique column Also removes redundant unique and notnull tags on ID column since these are implied by pk * Make realsender.go more readable * Use Tobi's style for wrapping errors * Restore treating all 5xx codes as temporary problems * Always load target account settings * Stub `policy` and `standard` * webpush.Sender: take type converter as ctor param * Move webpush.MockSender and noopSender into testrig
Diffstat (limited to 'vendor/github.com/SherClockHolmes/webpush-go/README.md')
-rw-r--r--vendor/github.com/SherClockHolmes/webpush-go/README.md63
1 files changed, 63 insertions, 0 deletions
diff --git a/vendor/github.com/SherClockHolmes/webpush-go/README.md b/vendor/github.com/SherClockHolmes/webpush-go/README.md
new file mode 100644
index 000000000..c313fc6b1
--- /dev/null
+++ b/vendor/github.com/SherClockHolmes/webpush-go/README.md
@@ -0,0 +1,63 @@
+# webpush-go
+
+[![Go Report Card](https://goreportcard.com/badge/github.com/SherClockHolmes/webpush-go)](https://goreportcard.com/report/github.com/SherClockHolmes/webpush-go)
+[![GoDoc](https://godoc.org/github.com/SherClockHolmes/webpush-go?status.svg)](https://godoc.org/github.com/SherClockHolmes/webpush-go)
+
+Web Push API Encryption with VAPID support.
+
+```bash
+go get -u github.com/SherClockHolmes/webpush-go
+```
+
+## Example
+
+For a full example, refer to the code in the [example](example/) directory.
+
+```go
+package main
+
+import (
+ "encoding/json"
+
+ webpush "github.com/SherClockHolmes/webpush-go"
+)
+
+func main() {
+ // Decode subscription
+ s := &webpush.Subscription{}
+ json.Unmarshal([]byte("<YOUR_SUBSCRIPTION>"), s)
+
+ // Send Notification
+ resp, err := webpush.SendNotification([]byte("Test"), s, &webpush.Options{
+ Subscriber: "example@example.com",
+ 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.
+
+```golang
+privateKey, publicKey, err := webpush.GenerateVAPIDKeys()
+if err != nil {
+ // TODO: Handle error
+}
+```
+
+## Development
+
+1. Install [Go 1.11+](https://golang.org/)
+2. `go mod vendor`
+3. `go test`
+
+#### For other language implementations visit:
+
+[WebPush Libs](https://github.com/web-push-libs)