pushpad 0.12.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +22 -0
- data/LICENSE.txt +1 -1
- data/README.md +15 -13
- data/lib/pushpad/notification.rb +3 -1
- data/lib/pushpad.rb +1 -1
- data/pushpad.gemspec +1 -1
- data/spec/pushpad/notification_spec.rb +4 -0
- data/spec/pushpad_spec.rb +2 -2
- metadata +4 -4
- data/.travis.yml +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48d7160263b210c7897b4171bb69b21916e155e3e3c5c252a23ab99f0d64252d
|
4
|
+
data.tar.gz: e06bc7a3e1d946403e45cc4ed57672d1fd97e4076d9d0538bf42ba7b13a5aaf1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33bc016ccd42f4ea8cced6e3b0a98e91c22c196ff1481b504f64ae231ec0ff0d67c4e47bd5fb5fd0ab42c544d3d97e559893ed85d71cce7057e355a5d138863e
|
7
|
+
data.tar.gz: 927b49b786b2ed3114d6a1c8b88dddcea72a21c6688a4bc9adc51e6206a5a0d6229134fdaace40c7687e957f0eba3a7045edb1e512ccfac4436568704bcdf803
|
@@ -0,0 +1,22 @@
|
|
1
|
+
name: CI
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
branches: [ master ]
|
5
|
+
pull_request:
|
6
|
+
branches: [ master ]
|
7
|
+
jobs:
|
8
|
+
test:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
strategy:
|
11
|
+
fail-fast: false
|
12
|
+
matrix:
|
13
|
+
ruby-version: ['2.7', '3.0', '3.1']
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v3
|
16
|
+
- name: Set up Ruby
|
17
|
+
uses: ruby/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: ${{ matrix.ruby-version }}
|
20
|
+
bundler-cache: true
|
21
|
+
- name: Run tests
|
22
|
+
run: bundle exec rspec
|
data/LICENSE.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2016-
|
3
|
+
Copyright (c) 2016-2022 Pushpad (https://pushpad.xyz)
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# Pushpad - Web Push Notifications
|
2
2
|
|
3
|
-
[](https://travis-ci.org/pushpad/pushpad-ruby)
|
4
3
|
[](https://badge.fury.io/rb/pushpad)
|
4
|
+

|
5
5
|
|
6
|
-
[Pushpad](https://pushpad.xyz) is a service for sending push notifications from your web app. It supports the **Push API** (Chrome, Firefox, Opera, Edge) and **APNs** (Safari).
|
6
|
+
[Pushpad](https://pushpad.xyz) is a service for sending push notifications from your web app. It supports the **Push API** (Chrome, Firefox, Opera, Edge) and **APNs** (Safari desktop). iOS support is coming in 2023.
|
7
7
|
|
8
8
|
Features:
|
9
9
|
|
@@ -59,6 +59,7 @@ notification = Pushpad::Notification.new({
|
|
59
59
|
title: "Website Name", # optional, defaults to your project name
|
60
60
|
target_url: "https://example.com", # optional, defaults to your project website
|
61
61
|
icon_url: "https://example.com/assets/icon.png", # optional, defaults to the project icon
|
62
|
+
badge_url: "https://example.com/assets/badge.png", # optional, defaults to the project badge
|
62
63
|
image_url: "https://example.com/assets/image.png", # optional, an image to display in the notification content
|
63
64
|
ttl: 604800, # optional, drop the notification after this number of seconds if a device is offline
|
64
65
|
require_interaction: true, # optional, prevent Chrome on desktop from automatically closing the notification after a few seconds
|
@@ -137,21 +138,22 @@ notification = Pushpad::Notification.find(42)
|
|
137
138
|
|
138
139
|
# get basic attributes
|
139
140
|
notification.id # => 42
|
140
|
-
notification.title # => "Foo Bar"
|
141
|
-
notification.body # => "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
|
142
|
-
notification.target_url # => "https://example.com"
|
143
|
-
notification.ttl # => 604800
|
144
|
-
notification.require_interaction # => false
|
145
|
-
notification.silent # => false
|
146
|
-
notification.urgent # => false
|
147
|
-
notification.icon_url # => "https://example.com/assets/icon.png"
|
141
|
+
notification.title # => "Foo Bar"
|
142
|
+
notification.body # => "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
|
143
|
+
notification.target_url # => "https://example.com"
|
144
|
+
notification.ttl # => 604800
|
145
|
+
notification.require_interaction # => false
|
146
|
+
notification.silent # => false
|
147
|
+
notification.urgent # => false
|
148
|
+
notification.icon_url # => "https://example.com/assets/icon.png"
|
149
|
+
notification.badge_url # => "https://example.com/assets/badge.png"
|
148
150
|
|
149
151
|
# `created_at` is a `Time` instance
|
150
|
-
notification.created_at.utc.to_s # => "2016-07-06 10:09:14 UTC"
|
152
|
+
notification.created_at.utc.to_s # => "2016-07-06 10:09:14 UTC"
|
151
153
|
|
152
154
|
# get statistics
|
153
155
|
notification.scheduled_count # => 1
|
154
|
-
notification.successfully_sent_count # => 4
|
156
|
+
notification.successfully_sent_count # => 4
|
155
157
|
notification.opened_count # => 2
|
156
158
|
```
|
157
159
|
|
@@ -162,7 +164,7 @@ notifications = Pushpad::Notification.find_all(project_id: 5)
|
|
162
164
|
|
163
165
|
# same attributes as for single notification in example above
|
164
166
|
notifications[0].id # => 42
|
165
|
-
notifications[0].title # => "Foo Bar"
|
167
|
+
notifications[0].title # => "Foo Bar"
|
166
168
|
```
|
167
169
|
|
168
170
|
If `Pushpad.project_id` is defined, the `project_id` option can be
|
data/lib/pushpad/notification.rb
CHANGED
@@ -12,7 +12,7 @@ module Pushpad
|
|
12
12
|
class ReadonlyError < RuntimeError
|
13
13
|
end
|
14
14
|
|
15
|
-
attr_accessor :body, :title, :target_url, :icon_url, :image_url, :ttl, :require_interaction, :silent, :urgent, :custom_data, :custom_metrics, :actions, :starred, :send_at
|
15
|
+
attr_accessor :body, :title, :target_url, :icon_url, :badge_url, :image_url, :ttl, :require_interaction, :silent, :urgent, :custom_data, :custom_metrics, :actions, :starred, :send_at
|
16
16
|
attr_reader :id, :created_at, :scheduled_count, :successfully_sent_count, :opened_count
|
17
17
|
|
18
18
|
def initialize(options)
|
@@ -26,6 +26,7 @@ module Pushpad
|
|
26
26
|
@title = options[:title]
|
27
27
|
@target_url = options[:target_url]
|
28
28
|
@icon_url = options[:icon_url]
|
29
|
+
@badge_url = options[:badge_url]
|
29
30
|
@image_url = options[:image_url]
|
30
31
|
@ttl = options[:ttl]
|
31
32
|
@require_interaction = options[:require_interaction]
|
@@ -116,6 +117,7 @@ module Pushpad
|
|
116
117
|
notification_params["title"] = self.title if self.title
|
117
118
|
notification_params["target_url"] = self.target_url if self.target_url
|
118
119
|
notification_params["icon_url"] = self.icon_url if self.icon_url
|
120
|
+
notification_params["badge_url"] = self.badge_url if self.badge_url
|
119
121
|
notification_params["image_url"] = self.image_url if self.image_url
|
120
122
|
notification_params["ttl"] = self.ttl if self.ttl
|
121
123
|
notification_params["require_interaction"] = self.require_interaction unless self.require_interaction.nil?
|
data/lib/pushpad.rb
CHANGED
@@ -26,7 +26,7 @@ module Pushpad
|
|
26
26
|
|
27
27
|
def self.signature_for(data)
|
28
28
|
raise "You must set Pushpad.auth_token" unless Pushpad.auth_token
|
29
|
-
OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('
|
29
|
+
OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), self.auth_token, data.to_s)
|
30
30
|
end
|
31
31
|
|
32
32
|
end
|
data/pushpad.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "pushpad"
|
3
|
-
spec.version = '0.
|
3
|
+
spec.version = '1.0.0'
|
4
4
|
spec.authors = ["Pushpad"]
|
5
5
|
spec.email = ["support@pushpad.xyz"]
|
6
6
|
spec.summary = "Web push notifications for Chrome, Firefox, Opera, Edge and Safari using Pushpad."
|
@@ -62,6 +62,7 @@ module Pushpad
|
|
62
62
|
silent: false,
|
63
63
|
urgent: false,
|
64
64
|
icon_url: "https://example.com/assets/icon.png",
|
65
|
+
badge_url: "https://example.com/assets/badge.png",
|
65
66
|
scheduled_count: 2,
|
66
67
|
successfully_sent_count: 4,
|
67
68
|
opened_count: 1
|
@@ -117,6 +118,7 @@ module Pushpad
|
|
117
118
|
silent: false,
|
118
119
|
urgent: false,
|
119
120
|
icon_url: "https://example.com/assets/icon.png",
|
121
|
+
badge_url: "https://example.com/assets/badge.png",
|
120
122
|
scheduled_count: 2,
|
121
123
|
successfully_sent_count: 4,
|
122
124
|
opened_count: 1
|
@@ -278,6 +280,7 @@ module Pushpad
|
|
278
280
|
title: "Website Name",
|
279
281
|
target_url: "https://example.com",
|
280
282
|
icon_url: "https://example.com/assets/icon.png",
|
283
|
+
badge_url: "https://example.com/assets/badge.png",
|
281
284
|
image_url: "https://example.com/assets/image.png",
|
282
285
|
ttl: 604800,
|
283
286
|
require_interaction: true,
|
@@ -361,6 +364,7 @@ module Pushpad
|
|
361
364
|
title: "Website Name",
|
362
365
|
target_url: "https://example.com",
|
363
366
|
icon_url: "https://example.com/assets/icon.png",
|
367
|
+
badge_url: "https://example.com/assets/badge.png",
|
364
368
|
image_url: "https://example.com/assets/image.png",
|
365
369
|
ttl: 604800,
|
366
370
|
require_interaction: true,
|
data/spec/pushpad_spec.rb
CHANGED
@@ -16,9 +16,9 @@ describe Pushpad do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
describe "#signature_for" do
|
19
|
-
it "produces the hex-encoded HMAC-
|
19
|
+
it "produces the hex-encoded HMAC-SHA256 signature for the data passed as argument" do
|
20
20
|
signature = Pushpad.signature_for('myuid1')
|
21
|
-
expect(signature).to eq '
|
21
|
+
expect(signature).to eq 'd213a2f146dd9aae9cb935b5233d42fecc9414e2b0e98896af7a43e7fce3ef31'
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pushpad
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pushpad
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -45,9 +45,9 @@ executables: []
|
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
+
- ".github/workflows/ci.yml"
|
48
49
|
- ".gitignore"
|
49
50
|
- ".rspec"
|
50
|
-
- ".travis.yml"
|
51
51
|
- Gemfile
|
52
52
|
- LICENSE.txt
|
53
53
|
- README.md
|
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
requirements: []
|
84
|
-
rubygems_version: 3.
|
84
|
+
rubygems_version: 3.3.26
|
85
85
|
signing_key:
|
86
86
|
specification_version: 4
|
87
87
|
summary: Web push notifications for Chrome, Firefox, Opera, Edge and Safari using
|