pushpad 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -3
- data/lib/pushpad/notification.rb +3 -1
- data/pushpad.gemspec +1 -1
- data/spec/pushpad/notification_spec.rb +21 -4
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 523d9efb23303960dd6479a1488ddbf0c6a4acfa
|
4
|
+
data.tar.gz: 1170dd487dcaee2ebe4cc45177e32ff75174241d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93f7b3c1c25d3a37d4dcf277055329f1e4e8874817a8f8291b1d4a9d8033dcb547b93c7093de3048b3e8fbe727b24ca9c0bd4a196c716726046b65ff849eb766
|
7
|
+
data.tar.gz: 5ce9742333e169945e3084b8b377e48fe8a186af589f26841b7f4f9844f5e984b1fe30363d0ee39c85d1aaec038a41809b0af3204558229159660eaaad024e2e
|
data/README.md
CHANGED
@@ -87,8 +87,8 @@ notification = Pushpad::Notification.new({
|
|
87
87
|
ttl: 604800, # optional, drop the notification after this number of seconds if a device is offline
|
88
88
|
require_interaction: true, # optional, prevent Chrome on desktop from automatically closing the notification after a few seconds
|
89
89
|
custom_data: "123", # optional, a string that is passed as an argument to action button callbacks
|
90
|
-
|
91
|
-
|
90
|
+
# optional, add some action buttons to the notification
|
91
|
+
# see https://pushpad.xyz/docs/action_buttons
|
92
92
|
actions: [
|
93
93
|
{
|
94
94
|
title: "My Button 1", # max length is 20 characters
|
@@ -97,7 +97,10 @@ notification = Pushpad::Notification.new({
|
|
97
97
|
action: "myActionName" # optional
|
98
98
|
}
|
99
99
|
],
|
100
|
-
starred: true # optional, bookmark the notification in the Pushpad dashboard (e.g. to highlight manual notifications)
|
100
|
+
starred: true, # optional, bookmark the notification in the Pushpad dashboard (e.g. to highlight manual notifications)
|
101
|
+
# optional, use this option only if you need to create scheduled notifications (max 5 days)
|
102
|
+
# see https://pushpad.xyz/docs/schedule_notifications
|
103
|
+
send_at: Time.utc(2016, 7, 25, 10, 9)
|
101
104
|
})
|
102
105
|
|
103
106
|
# deliver to a user
|
@@ -132,6 +135,7 @@ The methods above return an hash:
|
|
132
135
|
- `"id"` is the id of the notification on Pushpad
|
133
136
|
- `"scheduled"` is the estimated reach of the notification (i.e. the number of devices to which the notification will be sent, which can be different from the number of users, since a user may receive notifications on multiple devices)
|
134
137
|
- `"uids"` (`deliver_to` only) are the user IDs that will be actually reached by the notification because they are subscribed to your notifications. For example if you send a notification to `['uid1', 'uid2', 'uid3']`, but only `'uid1'` is subscribed, you will get `['uid1']` in response. Note that if a user has unsubscribed after the last notification sent to him, he may still be reported for one time as subscribed (this is due to [the way](http://blog.pushpad.xyz/2016/05/the-push-api-and-its-wild-unsubscription-mechanism/) the W3C Push API works).
|
138
|
+
- `"send_at"` is present only for scheduled notifications. The fields `"scheduled"` and `"uids"` are not available in this case.
|
135
139
|
|
136
140
|
The `id` and `scheduled_count` attribute are also stored on the notification object:
|
137
141
|
|
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, :custom_data, :actions, :starred
|
15
|
+
attr_accessor :body, :title, :target_url, :icon_url, :image_url, :ttl, :require_interaction, :custom_data, :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)
|
@@ -32,6 +32,7 @@ module Pushpad
|
|
32
32
|
@custom_data = options[:custom_data]
|
33
33
|
@actions = options[:actions]
|
34
34
|
@starred = options[:starred]
|
35
|
+
@send_at = options[:send_at]
|
35
36
|
end
|
36
37
|
|
37
38
|
def self.find(id)
|
@@ -118,6 +119,7 @@ module Pushpad
|
|
118
119
|
notification_params["custom_data"] = self.custom_data if self.custom_data
|
119
120
|
notification_params["actions"] = self.actions if self.actions
|
120
121
|
notification_params["starred"] = self.starred unless self.starred.nil?
|
122
|
+
notification_params["send_at"] = self.send_at.utc.strftime("%Y-%m-%dT%R") if self.send_at
|
121
123
|
|
122
124
|
body = { "notification" => notification_params }
|
123
125
|
body["uids"] = uids if uids
|
data/pushpad.gemspec
CHANGED
@@ -28,6 +28,7 @@ module Pushpad
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def stub_notification_post(project_id, params = {}, response_body = "{}")
|
31
|
+
|
31
32
|
stub_request(:post, "https://pushpad.xyz/projects/#{project_id}/notifications").
|
32
33
|
with(body: hash_including(params)).
|
33
34
|
to_return(status: 201, body: response_body)
|
@@ -248,9 +249,11 @@ module Pushpad
|
|
248
249
|
notification.deliver_to(100)
|
249
250
|
}
|
250
251
|
|
252
|
+
let(:notification_params_to_json) { {} }
|
253
|
+
|
251
254
|
shared_examples "notification params" do
|
252
255
|
it "includes the params in the request" do
|
253
|
-
req = stub_notification_post project_id, notification: notification_params
|
256
|
+
req = stub_notification_post project_id, notification: notification_params.merge(notification_params_to_json)
|
254
257
|
notification.deliver_to [123, 456]
|
255
258
|
expect(req).to have_been_made.once
|
256
259
|
end
|
@@ -283,7 +286,13 @@ module Pushpad
|
|
283
286
|
action: "myActionName"
|
284
287
|
}
|
285
288
|
],
|
286
|
-
starred: true
|
289
|
+
starred: true,
|
290
|
+
send_at: Time.utc(2016, 7, 25, 10, 9)
|
291
|
+
}
|
292
|
+
end
|
293
|
+
let(:notification_params_to_json) do
|
294
|
+
{
|
295
|
+
send_at: "2016-07-25T10:09"
|
287
296
|
}
|
288
297
|
end
|
289
298
|
let(:notification) { Pushpad::Notification.new notification_params }
|
@@ -320,9 +329,11 @@ module Pushpad
|
|
320
329
|
notification.broadcast
|
321
330
|
}
|
322
331
|
|
332
|
+
let(:notification_params_to_json) { {} }
|
333
|
+
|
323
334
|
shared_examples "notification params" do
|
324
335
|
it "includes the params in the request" do
|
325
|
-
req = stub_notification_post project_id, notification: notification_params
|
336
|
+
req = stub_notification_post project_id, notification: notification_params.merge(notification_params_to_json)
|
326
337
|
notification.broadcast
|
327
338
|
expect(req).to have_been_made.once
|
328
339
|
end
|
@@ -355,7 +366,13 @@ module Pushpad
|
|
355
366
|
action: "myActionName"
|
356
367
|
}
|
357
368
|
],
|
358
|
-
starred: true
|
369
|
+
starred: true,
|
370
|
+
send_at: Time.utc(2016, 7, 25, 10, 9)
|
371
|
+
}
|
372
|
+
end
|
373
|
+
let(:notification_params_to_json) do
|
374
|
+
{
|
375
|
+
send_at: "2016-07-25T10:09"
|
359
376
|
}
|
360
377
|
end
|
361
378
|
let(:notification) { Pushpad::Notification.new notification_params }
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pushpad
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pushpad
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: webmock
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
description:
|
@@ -45,9 +45,9 @@ executables: []
|
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
-
-
|
49
|
-
-
|
50
|
-
-
|
48
|
+
- .gitignore
|
49
|
+
- .rspec
|
50
|
+
- .travis.yml
|
51
51
|
- Gemfile
|
52
52
|
- LICENSE.txt
|
53
53
|
- README.md
|
@@ -72,17 +72,17 @@ require_paths:
|
|
72
72
|
- lib
|
73
73
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
requirements: []
|
84
84
|
rubyforge_project:
|
85
|
-
rubygems_version: 2.
|
85
|
+
rubygems_version: 2.0.14.1
|
86
86
|
signing_key:
|
87
87
|
specification_version: 4
|
88
88
|
summary: Web push notifications for Chrome, Firefox and Safari using Pushpad.
|