rpush 4.1.1 → 5.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +261 -161
- data/README.md +103 -17
- data/lib/generators/rpush_migration_generator.rb +1 -0
- data/lib/generators/templates/rpush.rb +4 -0
- data/lib/generators/templates/rpush_4_2_0_updates.rb +10 -0
- data/lib/rpush/cli.rb +1 -1
- data/lib/rpush/client/active_model.rb +4 -1
- data/lib/rpush/client/active_model/adm/data_validator.rb +1 -1
- data/lib/rpush/client/active_model/apns/device_token_format_validator.rb +2 -2
- data/lib/rpush/client/active_model/apns/notification.rb +9 -1
- data/lib/rpush/client/active_model/apns/notification_payload_size_validator.rb +15 -0
- data/lib/rpush/client/active_model/apns2/notification.rb +14 -0
- data/lib/rpush/client/active_model/gcm/expiry_collapse_key_mutual_inclusion_validator.rb +1 -1
- data/lib/rpush/client/active_model/gcm/notification.rb +4 -3
- data/lib/rpush/client/active_model/payload_data_size_validator.rb +1 -1
- data/lib/rpush/client/active_model/registration_ids_count_validator.rb +1 -1
- data/lib/rpush/client/active_model/webpush/app.rb +41 -0
- data/lib/rpush/client/active_model/webpush/notification.rb +66 -0
- data/lib/rpush/client/active_model/wns/notification.rb +8 -0
- data/lib/rpush/client/active_record.rb +4 -0
- data/lib/rpush/client/active_record/apns/active_record_serializable_notification.rb +65 -0
- data/lib/rpush/client/active_record/apns/notification.rb +1 -29
- data/lib/rpush/client/active_record/apns2/notification.rb +4 -1
- data/lib/rpush/client/active_record/apnsp8/notification.rb +1 -0
- data/lib/rpush/client/active_record/app.rb +1 -1
- data/lib/rpush/client/active_record/notification.rb +1 -1
- data/lib/rpush/client/active_record/webpush/app.rb +11 -0
- data/lib/rpush/client/active_record/webpush/notification.rb +12 -0
- data/lib/rpush/client/redis.rb +3 -0
- data/lib/rpush/client/redis/apns2/notification.rb +1 -0
- data/lib/rpush/client/redis/apnsp8/notification.rb +2 -0
- data/lib/rpush/client/redis/notification.rb +2 -1
- data/lib/rpush/client/redis/pushy/notification.rb +0 -1
- data/lib/rpush/client/redis/webpush/app.rb +15 -0
- data/lib/rpush/client/redis/webpush/notification.rb +15 -0
- data/lib/rpush/configuration.rb +3 -2
- data/lib/rpush/daemon.rb +4 -1
- data/lib/rpush/daemon/apns/feedback_receiver.rb +2 -1
- data/lib/rpush/daemon/apns2/delivery.rb +13 -2
- data/lib/rpush/daemon/apnsp8/delivery.rb +7 -2
- data/lib/rpush/daemon/app_runner.rb +1 -1
- data/lib/rpush/daemon/batch.rb +12 -5
- data/lib/rpush/daemon/delivery.rb +1 -2
- data/lib/rpush/daemon/dispatcher/apns_http2.rb +4 -2
- data/lib/rpush/daemon/dispatcher/apnsp8_http2.rb +2 -1
- data/lib/rpush/daemon/signal_handler.rb +1 -1
- data/lib/rpush/daemon/store/active_record.rb +1 -1
- data/lib/rpush/daemon/store/active_record/reconnectable.rb +1 -1
- data/lib/rpush/daemon/store/redis.rb +1 -1
- data/lib/rpush/daemon/webpush.rb +10 -0
- data/lib/rpush/daemon/webpush/delivery.rb +114 -0
- data/lib/rpush/daemon/wns/badge_request.rb +8 -3
- data/lib/rpush/daemon/wns/raw_request.rb +9 -2
- data/lib/rpush/daemon/wns/toast_request.rb +6 -2
- data/lib/rpush/logger.rb +1 -0
- data/lib/rpush/version.rb +3 -3
- data/spec/.rubocop.yml +1 -1
- data/spec/functional/apns2_spec.rb +97 -2
- data/spec/functional/gcm_priority_spec.rb +40 -0
- data/spec/functional/webpush_spec.rb +30 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/support/active_record_setup.rb +3 -1
- data/spec/support/simplecov_helper.rb +1 -1
- data/spec/unit/client/active_record/adm/app_spec.rb +2 -54
- data/spec/unit/client/active_record/adm/notification_spec.rb +2 -39
- data/spec/unit/client/active_record/apns/app_spec.rb +3 -26
- data/spec/unit/client/active_record/apns/feedback_spec.rb +1 -5
- data/spec/unit/client/active_record/apns/notification_spec.rb +29 -288
- data/spec/unit/client/active_record/apns2/app_spec.rb +4 -0
- data/spec/unit/client/active_record/apns2/notification_spec.rb +65 -0
- data/spec/unit/client/active_record/apnsp8/notification_spec.rb +28 -0
- data/spec/unit/client/active_record/app_spec.rb +1 -26
- data/spec/unit/client/active_record/gcm/app_spec.rb +3 -1
- data/spec/unit/client/active_record/gcm/notification_spec.rb +6 -83
- data/spec/unit/client/active_record/notification_spec.rb +10 -11
- data/spec/unit/client/active_record/pushy/app_spec.rb +2 -13
- data/spec/unit/client/active_record/pushy/notification_spec.rb +2 -55
- data/spec/unit/client/active_record/shared/app.rb +14 -0
- data/spec/unit/{notification_shared.rb → client/active_record/shared/notification.rb} +12 -7
- data/spec/unit/client/active_record/webpush/app_spec.rb +6 -0
- data/spec/unit/client/active_record/webpush/notification_spec.rb +6 -0
- data/spec/unit/client/active_record/wns/badge_notification_spec.rb +1 -11
- data/spec/unit/client/active_record/wns/raw_notification_spec.rb +3 -12
- data/spec/unit/client/active_record/wpns/app_spec.rb +3 -1
- data/spec/unit/client/active_record/wpns/notification_spec.rb +2 -17
- data/spec/unit/client/redis/adm/app_spec.rb +5 -0
- data/spec/unit/client/redis/adm/notification_spec.rb +5 -0
- data/spec/unit/client/redis/apns/app_spec.rb +5 -0
- data/spec/unit/client/redis/apns/feedback_spec.rb +5 -0
- data/spec/unit/client/redis/apns/notification_spec.rb +50 -0
- data/spec/unit/client/redis/apns2/app_spec.rb +4 -0
- data/spec/unit/client/redis/apns2/notification_spec.rb +50 -0
- data/spec/unit/client/redis/apnsp8/notification_spec.rb +29 -0
- data/spec/unit/client/redis/app_spec.rb +5 -0
- data/spec/unit/client/redis/gcm/app_spec.rb +5 -0
- data/spec/unit/client/redis/gcm/notification_spec.rb +5 -0
- data/spec/unit/client/redis/notification_spec.rb +5 -0
- data/spec/unit/client/redis/pushy/app_spec.rb +5 -0
- data/spec/unit/client/redis/pushy/notification_spec.rb +5 -0
- data/spec/unit/client/redis/webpush/app_spec.rb +5 -0
- data/spec/unit/client/redis/webpush/notification_spec.rb +5 -0
- data/spec/unit/client/redis/wns/badge_notification_spec.rb +5 -0
- data/spec/unit/client/redis/wns/raw_notification_spec.rb +22 -0
- data/spec/unit/client/redis/wpns/app_spec.rb +5 -0
- data/spec/unit/client/redis/wpns/notification_spec.rb +5 -0
- data/spec/unit/client/shared/adm/app.rb +51 -0
- data/spec/unit/client/shared/adm/notification.rb +39 -0
- data/spec/unit/client/shared/apns/app.rb +29 -0
- data/spec/unit/client/shared/apns/feedback.rb +9 -0
- data/spec/unit/client/shared/apns/notification.rb +262 -0
- data/spec/unit/client/shared/app.rb +17 -0
- data/spec/unit/client/shared/gcm/app.rb +4 -0
- data/spec/unit/client/shared/gcm/notification.rb +77 -0
- data/spec/unit/client/shared/notification.rb +10 -0
- data/spec/unit/client/shared/pushy/app.rb +17 -0
- data/spec/unit/client/shared/pushy/notification.rb +55 -0
- data/spec/unit/client/shared/webpush/app.rb +33 -0
- data/spec/unit/client/shared/webpush/notification.rb +83 -0
- data/spec/unit/client/shared/wns/badge_notification.rb +15 -0
- data/spec/unit/client/shared/wns/raw_notification.rb +21 -0
- data/spec/unit/client/shared/wpns/app.rb +4 -0
- data/spec/unit/client/shared/wpns/notification.rb +18 -0
- data/spec/unit/daemon/apns/feedback_receiver_spec.rb +19 -1
- data/spec/unit/daemon/batch_spec.rb +50 -2
- data/spec/unit/daemon/delivery_spec.rb +10 -0
- data/spec/unit/daemon/gcm/delivery_spec.rb +1 -1
- data/spec/unit/daemon/shared/store.rb +312 -0
- data/spec/unit/daemon/store/active_record/reconnectable_spec.rb +7 -7
- data/spec/unit/daemon/store/active_record_spec.rb +7 -295
- data/spec/unit/daemon/store/redis_spec.rb +4 -293
- data/spec/unit/daemon/webpush/delivery_spec.rb +142 -0
- data/spec/unit/daemon/wns/post_request_spec.rb +64 -0
- data/spec/unit_spec_helper.rb +3 -0
- metadata +140 -13
- data/lib/rpush/client/active_model/apns/binary_notification_validator.rb +0 -16
@@ -0,0 +1,142 @@
|
|
1
|
+
require 'unit_spec_helper'
|
2
|
+
|
3
|
+
describe Rpush::Daemon::Webpush::Delivery do
|
4
|
+
let(:app) { Rpush::Webpush::App.create!(name: 'MyApp', vapid_keypair: VAPID_KEYPAIR) }
|
5
|
+
|
6
|
+
# Push subscription information as received from a client browser when the
|
7
|
+
# user subscribed to push notifications.
|
8
|
+
let(:device_reg) {
|
9
|
+
{ endpoint: 'https://webpush-provider.example.org/push/some-id',
|
10
|
+
keys: {'auth' => 'DgN9EBia1o057BdhCOGURA', 'p256dh' => 'BAtxJ--7vHq9IVm8utUB3peJ4lpxRqk1rukCIkVJOomS83QkCnrQ4EyYQsSaCRgy_c8XPytgXxuyAvRJdnTPK4A'} }
|
11
|
+
}
|
12
|
+
|
13
|
+
let(:data) { { message: 'some message' } }
|
14
|
+
let(:notification) { Rpush::Webpush::Notification.create!(app: app, registration_ids: [device_reg], data: data) }
|
15
|
+
let(:batch) { instance_double('Rpush::Daemon::Batch', notification_processed: nil) }
|
16
|
+
let(:response) { instance_double('Net::HTTPResponse', code: response_code, header: response_header, body: response_body) }
|
17
|
+
let(:response_code) { 201 }
|
18
|
+
let(:response_header) { {} }
|
19
|
+
let(:response_body) { nil }
|
20
|
+
let(:http) { instance_double('Net::HTTP::Persistent', request: response) }
|
21
|
+
let(:logger) { instance_double('Rpush::Logger', error: nil, info: nil, warn: nil, internal_logger: nil) }
|
22
|
+
let(:now) { Time.parse('2020-10-13 00:00:00 UTC') }
|
23
|
+
|
24
|
+
before do
|
25
|
+
allow(Rpush).to receive_messages(logger: logger)
|
26
|
+
allow(Time).to receive_messages(now: now)
|
27
|
+
end
|
28
|
+
|
29
|
+
subject(:delivery) { described_class.new(app, http, notification, batch) }
|
30
|
+
|
31
|
+
describe '#perform' do
|
32
|
+
shared_examples 'process notification' do
|
33
|
+
it 'invoke batch.notification_processed' do
|
34
|
+
subject.perform rescue nil
|
35
|
+
expect(batch).to have_received(:notification_processed)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when response code is 201' do
|
40
|
+
before do
|
41
|
+
allow(batch).to receive(:mark_delivered)
|
42
|
+
Rpush::Daemon.store = Rpush::Daemon::Store.const_get(Rpush.config.client.to_s.camelcase).new
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'marks the notification as delivered' do
|
46
|
+
delivery.perform
|
47
|
+
expect(batch).to have_received(:mark_delivered).with(notification)
|
48
|
+
end
|
49
|
+
|
50
|
+
it_behaves_like 'process notification'
|
51
|
+
end
|
52
|
+
|
53
|
+
shared_examples 'retry delivery' do |response_code:|
|
54
|
+
let(:response_code) { response_code }
|
55
|
+
|
56
|
+
shared_examples 'logs' do |deliver_after:|
|
57
|
+
let(:expected_log_message) do
|
58
|
+
"[MyApp] Webpush endpoint responded with a #{response_code} error. Notification #{notification.id} will be retried after #{deliver_after} (retry 1)."
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'logs that the notification will be retried' do
|
62
|
+
delivery.perform
|
63
|
+
expect(logger).to have_received(:info).with(expected_log_message)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'when Retry-After header is present' do
|
68
|
+
let(:response_header) { { 'retry-after' => 10 } }
|
69
|
+
|
70
|
+
before do
|
71
|
+
allow(delivery).to receive(:mark_retryable) do
|
72
|
+
notification.deliver_after = now + 10.seconds
|
73
|
+
notification.retries += 1
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'retry the notification' do
|
78
|
+
delivery.perform
|
79
|
+
expect(delivery).to have_received(:mark_retryable).with(notification, now + 10.seconds)
|
80
|
+
end
|
81
|
+
|
82
|
+
it_behaves_like 'logs', deliver_after: '2020-10-13 00:00:10'
|
83
|
+
it_behaves_like 'process notification'
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'when Retry-After header is not present' do
|
87
|
+
before do
|
88
|
+
allow(delivery).to receive(:mark_retryable_exponential) do
|
89
|
+
notification.deliver_after = now + 2.seconds
|
90
|
+
notification.retries = 1
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'retry the notification' do
|
95
|
+
delivery.perform
|
96
|
+
expect(delivery).to have_received(:mark_retryable_exponential).with(notification)
|
97
|
+
end
|
98
|
+
|
99
|
+
it_behaves_like 'logs', deliver_after: '2020-10-13 00:00:02'
|
100
|
+
it_behaves_like 'process notification'
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
it_behaves_like 'retry delivery', response_code: 429
|
105
|
+
it_behaves_like 'retry delivery', response_code: 500
|
106
|
+
it_behaves_like 'retry delivery', response_code: 502
|
107
|
+
it_behaves_like 'retry delivery', response_code: 503
|
108
|
+
it_behaves_like 'retry delivery', response_code: 504
|
109
|
+
|
110
|
+
context 'when delivery failed' do
|
111
|
+
let(:response_code) { 400 }
|
112
|
+
let(:fail_message) { 'that was a bad request' }
|
113
|
+
before do
|
114
|
+
allow(response).to receive(:body) { fail_message }
|
115
|
+
allow(batch).to receive(:mark_failed)
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'marks the notification as failed' do
|
119
|
+
expect { delivery.perform }.to raise_error(Rpush::DeliveryError)
|
120
|
+
expected_message = "Unable to deliver notification #{notification.id}, " \
|
121
|
+
"received error 400 (Bad Request: #{fail_message})"
|
122
|
+
expect(batch).to have_received(:mark_failed).with(notification, 400, expected_message)
|
123
|
+
end
|
124
|
+
|
125
|
+
it_behaves_like 'process notification'
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'when SocketError raised' do
|
129
|
+
before do
|
130
|
+
allow(http).to receive(:request) { raise SocketError }
|
131
|
+
allow(delivery).to receive(:mark_retryable)
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'retry delivery after 10 seconds' do
|
135
|
+
expect { delivery.perform }.to raise_error(SocketError)
|
136
|
+
expect(delivery).to have_received(:mark_retryable).with(notification, now + 10.seconds, SocketError)
|
137
|
+
end
|
138
|
+
|
139
|
+
it_behaves_like 'process notification'
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
@@ -30,6 +30,8 @@ describe Rpush::Daemon::Wns::PostRequest do
|
|
30
30
|
expect(request.body).to include('<toast>')
|
31
31
|
expect(request.body).to include('MyApp')
|
32
32
|
expect(request.body).to include('Example notification')
|
33
|
+
# no priority header
|
34
|
+
expect { request.fetch('X-WNS-PRIORITY') }.to raise_error(KeyError)
|
33
35
|
end
|
34
36
|
|
35
37
|
context 'with launch' do
|
@@ -55,6 +57,29 @@ describe Rpush::Daemon::Wns::PostRequest do
|
|
55
57
|
end
|
56
58
|
end
|
57
59
|
|
60
|
+
context 'with priority' do
|
61
|
+
let(:notification) do
|
62
|
+
Rpush::Wns::Notification.create!(
|
63
|
+
app: app,
|
64
|
+
data: {
|
65
|
+
title: "MyApp",
|
66
|
+
body: "Example notification"
|
67
|
+
},
|
68
|
+
uri: "http://some.example/",
|
69
|
+
priority: 1
|
70
|
+
)
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'creates a request characteristic for toast notification with priority' do
|
74
|
+
request = Rpush::Daemon::Wns::PostRequest.create(notification, 'token')
|
75
|
+
expect(request['X-WNS-Type']).to eq('wns/toast')
|
76
|
+
expect(request['Content-Type']).to eq('text/xml')
|
77
|
+
expect(request['X-WNS-PRIORITY']).to eq('1')
|
78
|
+
expect(request.body).to include('MyApp')
|
79
|
+
expect(request.body).to include('Example notification')
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
58
83
|
context 'with sound' do
|
59
84
|
let(:notification) do
|
60
85
|
Rpush::Wns::Notification.create!(
|
@@ -95,6 +120,25 @@ describe Rpush::Daemon::Wns::PostRequest do
|
|
95
120
|
expect(request['Content-Type']).to eq('application/octet-stream')
|
96
121
|
expect(request.body).to eq("{\"foo\":\"foo\",\"bar\":\"bar\"}")
|
97
122
|
end
|
123
|
+
|
124
|
+
context 'with priority' do
|
125
|
+
let(:notification) do
|
126
|
+
Rpush::Wns::RawNotification.create!(
|
127
|
+
app: app,
|
128
|
+
data: { foo: 'foo', bar: 'bar' },
|
129
|
+
uri: "http://some.example/",
|
130
|
+
priority: 3
|
131
|
+
)
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'creates a request characteristic for raw notification with priority' do
|
135
|
+
request = Rpush::Daemon::Wns::PostRequest.create(notification, 'token')
|
136
|
+
expect(request['X-WNS-Type']).to eq('wns/raw')
|
137
|
+
expect(request['X-WNS-PRIORITY']).to eq('3')
|
138
|
+
expect(request['Content-Type']).to eq('application/octet-stream')
|
139
|
+
expect(request.body).to eq("{\"foo\":\"foo\",\"bar\":\"bar\"}")
|
140
|
+
end
|
141
|
+
end
|
98
142
|
end
|
99
143
|
|
100
144
|
context 'BadgeNotification' do
|
@@ -113,5 +157,25 @@ describe Rpush::Daemon::Wns::PostRequest do
|
|
113
157
|
expect(request.body).to include('<badge')
|
114
158
|
expect(request.body).to include('42')
|
115
159
|
end
|
160
|
+
|
161
|
+
context 'with priority' do
|
162
|
+
let(:notification) do
|
163
|
+
Rpush::Wns::BadgeNotification.create!(
|
164
|
+
app: app,
|
165
|
+
uri: "http://some.example/",
|
166
|
+
badge: 42,
|
167
|
+
priority: 4
|
168
|
+
)
|
169
|
+
end
|
170
|
+
|
171
|
+
it 'creates a request characteristic for badge notification with priority' do
|
172
|
+
request = Rpush::Daemon::Wns::PostRequest.create(notification, 'token')
|
173
|
+
expect(request['X-WNS-Type']).to eq('wns/badge')
|
174
|
+
expect(request['X-WNS-PRIORITY']).to eq('4')
|
175
|
+
expect(request['Content-Type']).to eq('text/xml')
|
176
|
+
expect(request.body).to include('<badge')
|
177
|
+
expect(request.body).to include('42')
|
178
|
+
end
|
179
|
+
end
|
116
180
|
end
|
117
181
|
end
|
data/spec/unit_spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rpush
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian Leitch
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -44,14 +44,20 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
47
|
+
version: '0.18'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 0.18.3
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
55
|
- - "~>"
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0.
|
57
|
+
version: '0.18'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.18.3
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: jwt
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +78,14 @@ dependencies:
|
|
72
78
|
requirements:
|
73
79
|
- - ">="
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
81
|
+
version: '5.0'
|
76
82
|
type: :runtime
|
77
83
|
prerelease: false
|
78
84
|
version_requirements: !ruby/object:Gem::Requirement
|
79
85
|
requirements:
|
80
86
|
- - ">="
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
88
|
+
version: '5.0'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
90
|
name: thor
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,6 +134,20 @@ dependencies:
|
|
128
134
|
- - ">="
|
129
135
|
- !ruby/object:Gem::Version
|
130
136
|
version: '0'
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: webpush
|
139
|
+
requirement: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - "~>"
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '1.0'
|
144
|
+
type: :runtime
|
145
|
+
prerelease: false
|
146
|
+
version_requirements: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - "~>"
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '1.0'
|
131
151
|
- !ruby/object:Gem::Dependency
|
132
152
|
name: rake
|
133
153
|
requirement: !ruby/object:Gem::Requirement
|
@@ -392,6 +412,7 @@ files:
|
|
392
412
|
- lib/generators/templates/rpush_3_3_1_updates.rb
|
393
413
|
- lib/generators/templates/rpush_4_1_0_updates.rb
|
394
414
|
- lib/generators/templates/rpush_4_1_1_updates.rb
|
415
|
+
- lib/generators/templates/rpush_4_2_0_updates.rb
|
395
416
|
- lib/rpush.rb
|
396
417
|
- lib/rpush/apns_feedback.rb
|
397
418
|
- lib/rpush/cli.rb
|
@@ -400,9 +421,9 @@ files:
|
|
400
421
|
- lib/rpush/client/active_model/adm/data_validator.rb
|
401
422
|
- lib/rpush/client/active_model/adm/notification.rb
|
402
423
|
- lib/rpush/client/active_model/apns/app.rb
|
403
|
-
- lib/rpush/client/active_model/apns/binary_notification_validator.rb
|
404
424
|
- lib/rpush/client/active_model/apns/device_token_format_validator.rb
|
405
425
|
- lib/rpush/client/active_model/apns/notification.rb
|
426
|
+
- lib/rpush/client/active_model/apns/notification_payload_size_validator.rb
|
406
427
|
- lib/rpush/client/active_model/apns2/app.rb
|
407
428
|
- lib/rpush/client/active_model/apns2/notification.rb
|
408
429
|
- lib/rpush/client/active_model/apnsp8/app.rb
|
@@ -416,6 +437,8 @@ files:
|
|
416
437
|
- lib/rpush/client/active_model/pushy/notification.rb
|
417
438
|
- lib/rpush/client/active_model/pushy/time_to_live_validator.rb
|
418
439
|
- lib/rpush/client/active_model/registration_ids_count_validator.rb
|
440
|
+
- lib/rpush/client/active_model/webpush/app.rb
|
441
|
+
- lib/rpush/client/active_model/webpush/notification.rb
|
419
442
|
- lib/rpush/client/active_model/wns/app.rb
|
420
443
|
- lib/rpush/client/active_model/wns/notification.rb
|
421
444
|
- lib/rpush/client/active_model/wpns/app.rb
|
@@ -423,6 +446,7 @@ files:
|
|
423
446
|
- lib/rpush/client/active_record.rb
|
424
447
|
- lib/rpush/client/active_record/adm/app.rb
|
425
448
|
- lib/rpush/client/active_record/adm/notification.rb
|
449
|
+
- lib/rpush/client/active_record/apns/active_record_serializable_notification.rb
|
426
450
|
- lib/rpush/client/active_record/apns/app.rb
|
427
451
|
- lib/rpush/client/active_record/apns/feedback.rb
|
428
452
|
- lib/rpush/client/active_record/apns/notification.rb
|
@@ -436,6 +460,8 @@ files:
|
|
436
460
|
- lib/rpush/client/active_record/notification.rb
|
437
461
|
- lib/rpush/client/active_record/pushy/app.rb
|
438
462
|
- lib/rpush/client/active_record/pushy/notification.rb
|
463
|
+
- lib/rpush/client/active_record/webpush/app.rb
|
464
|
+
- lib/rpush/client/active_record/webpush/notification.rb
|
439
465
|
- lib/rpush/client/active_record/wns/app.rb
|
440
466
|
- lib/rpush/client/active_record/wns/badge_notification.rb
|
441
467
|
- lib/rpush/client/active_record/wns/notification.rb
|
@@ -458,6 +484,8 @@ files:
|
|
458
484
|
- lib/rpush/client/redis/notification.rb
|
459
485
|
- lib/rpush/client/redis/pushy/app.rb
|
460
486
|
- lib/rpush/client/redis/pushy/notification.rb
|
487
|
+
- lib/rpush/client/redis/webpush/app.rb
|
488
|
+
- lib/rpush/client/redis/webpush/notification.rb
|
461
489
|
- lib/rpush/client/redis/wns/app.rb
|
462
490
|
- lib/rpush/client/redis/wns/badge_notification.rb
|
463
491
|
- lib/rpush/client/redis/wns/notification.rb
|
@@ -512,6 +540,8 @@ files:
|
|
512
540
|
- lib/rpush/daemon/string_helpers.rb
|
513
541
|
- lib/rpush/daemon/synchronizer.rb
|
514
542
|
- lib/rpush/daemon/tcp_connection.rb
|
543
|
+
- lib/rpush/daemon/webpush.rb
|
544
|
+
- lib/rpush/daemon/webpush/delivery.rb
|
515
545
|
- lib/rpush/daemon/wns.rb
|
516
546
|
- lib/rpush/daemon/wns/badge_request.rb
|
517
547
|
- lib/rpush/daemon/wns/delivery.rb
|
@@ -538,11 +568,13 @@ files:
|
|
538
568
|
- spec/functional/apns_spec.rb
|
539
569
|
- spec/functional/cli_spec.rb
|
540
570
|
- spec/functional/embed_spec.rb
|
571
|
+
- spec/functional/gcm_priority_spec.rb
|
541
572
|
- spec/functional/gcm_spec.rb
|
542
573
|
- spec/functional/new_app_spec.rb
|
543
574
|
- spec/functional/pushy_spec.rb
|
544
575
|
- spec/functional/retry_spec.rb
|
545
576
|
- spec/functional/synchronization_spec.rb
|
577
|
+
- spec/functional/webpush_spec.rb
|
546
578
|
- spec/functional/wpns_spec.rb
|
547
579
|
- spec/functional_spec_helper.rb
|
548
580
|
- spec/spec_helper.rb
|
@@ -559,16 +591,60 @@ files:
|
|
559
591
|
- spec/unit/client/active_record/apns/app_spec.rb
|
560
592
|
- spec/unit/client/active_record/apns/feedback_spec.rb
|
561
593
|
- spec/unit/client/active_record/apns/notification_spec.rb
|
594
|
+
- spec/unit/client/active_record/apns2/app_spec.rb
|
595
|
+
- spec/unit/client/active_record/apns2/notification_spec.rb
|
596
|
+
- spec/unit/client/active_record/apnsp8/notification_spec.rb
|
562
597
|
- spec/unit/client/active_record/app_spec.rb
|
563
598
|
- spec/unit/client/active_record/gcm/app_spec.rb
|
564
599
|
- spec/unit/client/active_record/gcm/notification_spec.rb
|
565
600
|
- spec/unit/client/active_record/notification_spec.rb
|
566
601
|
- spec/unit/client/active_record/pushy/app_spec.rb
|
567
602
|
- spec/unit/client/active_record/pushy/notification_spec.rb
|
603
|
+
- spec/unit/client/active_record/shared/app.rb
|
604
|
+
- spec/unit/client/active_record/shared/notification.rb
|
605
|
+
- spec/unit/client/active_record/webpush/app_spec.rb
|
606
|
+
- spec/unit/client/active_record/webpush/notification_spec.rb
|
568
607
|
- spec/unit/client/active_record/wns/badge_notification_spec.rb
|
569
608
|
- spec/unit/client/active_record/wns/raw_notification_spec.rb
|
570
609
|
- spec/unit/client/active_record/wpns/app_spec.rb
|
571
610
|
- spec/unit/client/active_record/wpns/notification_spec.rb
|
611
|
+
- spec/unit/client/redis/adm/app_spec.rb
|
612
|
+
- spec/unit/client/redis/adm/notification_spec.rb
|
613
|
+
- spec/unit/client/redis/apns/app_spec.rb
|
614
|
+
- spec/unit/client/redis/apns/feedback_spec.rb
|
615
|
+
- spec/unit/client/redis/apns/notification_spec.rb
|
616
|
+
- spec/unit/client/redis/apns2/app_spec.rb
|
617
|
+
- spec/unit/client/redis/apns2/notification_spec.rb
|
618
|
+
- spec/unit/client/redis/apnsp8/notification_spec.rb
|
619
|
+
- spec/unit/client/redis/app_spec.rb
|
620
|
+
- spec/unit/client/redis/gcm/app_spec.rb
|
621
|
+
- spec/unit/client/redis/gcm/notification_spec.rb
|
622
|
+
- spec/unit/client/redis/notification_spec.rb
|
623
|
+
- spec/unit/client/redis/pushy/app_spec.rb
|
624
|
+
- spec/unit/client/redis/pushy/notification_spec.rb
|
625
|
+
- spec/unit/client/redis/webpush/app_spec.rb
|
626
|
+
- spec/unit/client/redis/webpush/notification_spec.rb
|
627
|
+
- spec/unit/client/redis/wns/badge_notification_spec.rb
|
628
|
+
- spec/unit/client/redis/wns/raw_notification_spec.rb
|
629
|
+
- spec/unit/client/redis/wpns/app_spec.rb
|
630
|
+
- spec/unit/client/redis/wpns/notification_spec.rb
|
631
|
+
- spec/unit/client/shared/adm/app.rb
|
632
|
+
- spec/unit/client/shared/adm/notification.rb
|
633
|
+
- spec/unit/client/shared/apns/app.rb
|
634
|
+
- spec/unit/client/shared/apns/feedback.rb
|
635
|
+
- spec/unit/client/shared/apns/notification.rb
|
636
|
+
- spec/unit/client/shared/app.rb
|
637
|
+
- spec/unit/client/shared/gcm/app.rb
|
638
|
+
- spec/unit/client/shared/gcm/notification.rb
|
639
|
+
- spec/unit/client/shared/notification.rb
|
640
|
+
- spec/unit/client/shared/pushy/app.rb
|
641
|
+
- spec/unit/client/shared/pushy/notification.rb
|
642
|
+
- spec/unit/client/shared/webpush/app.rb
|
643
|
+
- spec/unit/client/shared/webpush/notification.rb
|
644
|
+
- spec/unit/client/shared/wns/badge_notification.rb
|
645
|
+
- spec/unit/client/shared/wns/raw_notification.rb
|
646
|
+
- spec/unit/client/shared/wpns/app.rb
|
647
|
+
- spec/unit/client/shared/wpns/notification.rb
|
572
648
|
- spec/unit/configuration_spec.rb
|
573
649
|
- spec/unit/daemon/adm/delivery_spec.rb
|
574
650
|
- spec/unit/daemon/apns/certificate_expired_error_spec.rb
|
@@ -587,11 +663,13 @@ files:
|
|
587
663
|
- spec/unit/daemon/pushy/delivery_spec.rb
|
588
664
|
- spec/unit/daemon/retryable_error_spec.rb
|
589
665
|
- spec/unit/daemon/service_config_methods_spec.rb
|
666
|
+
- spec/unit/daemon/shared/store.rb
|
590
667
|
- spec/unit/daemon/signal_handler_spec.rb
|
591
668
|
- spec/unit/daemon/store/active_record/reconnectable_spec.rb
|
592
669
|
- spec/unit/daemon/store/active_record_spec.rb
|
593
670
|
- spec/unit/daemon/store/redis_spec.rb
|
594
671
|
- spec/unit/daemon/tcp_connection_spec.rb
|
672
|
+
- spec/unit/daemon/webpush/delivery_spec.rb
|
595
673
|
- spec/unit/daemon/wns/delivery_spec.rb
|
596
674
|
- spec/unit/daemon/wns/post_request_spec.rb
|
597
675
|
- spec/unit/daemon/wpns/delivery_spec.rb
|
@@ -600,7 +678,6 @@ files:
|
|
600
678
|
- spec/unit/deprecation_spec.rb
|
601
679
|
- spec/unit/embed_spec.rb
|
602
680
|
- spec/unit/logger_spec.rb
|
603
|
-
- spec/unit/notification_shared.rb
|
604
681
|
- spec/unit/plugin_spec.rb
|
605
682
|
- spec/unit/push_spec.rb
|
606
683
|
- spec/unit/reflectable_spec.rb
|
@@ -610,7 +687,10 @@ files:
|
|
610
687
|
homepage: https://github.com/rpush/rpush
|
611
688
|
licenses:
|
612
689
|
- MIT
|
613
|
-
metadata:
|
690
|
+
metadata:
|
691
|
+
bug_tracker_uri: https://github.com/rpush/rpush/issues
|
692
|
+
changelog_uri: https://github.com/rpush/rpush/blob/master/CHANGELOG.md
|
693
|
+
source_code_uri: https://github.com/rpush/rpush
|
614
694
|
post_install_message: |
|
615
695
|
When upgrading, don't forget to run `bundle exec rpush init` to get all the latest migrations.
|
616
696
|
|
@@ -630,8 +710,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
630
710
|
- !ruby/object:Gem::Version
|
631
711
|
version: '0'
|
632
712
|
requirements: []
|
633
|
-
rubygems_version: 3.
|
634
|
-
signing_key:
|
713
|
+
rubygems_version: 3.1.4
|
714
|
+
signing_key:
|
635
715
|
specification_version: 4
|
636
716
|
summary: The push notification service for Ruby.
|
637
717
|
test_files:
|
@@ -641,11 +721,13 @@ test_files:
|
|
641
721
|
- spec/functional/apns_spec.rb
|
642
722
|
- spec/functional/cli_spec.rb
|
643
723
|
- spec/functional/embed_spec.rb
|
724
|
+
- spec/functional/gcm_priority_spec.rb
|
644
725
|
- spec/functional/gcm_spec.rb
|
645
726
|
- spec/functional/new_app_spec.rb
|
646
727
|
- spec/functional/pushy_spec.rb
|
647
728
|
- spec/functional/retry_spec.rb
|
648
729
|
- spec/functional/synchronization_spec.rb
|
730
|
+
- spec/functional/webpush_spec.rb
|
649
731
|
- spec/functional/wpns_spec.rb
|
650
732
|
- spec/functional_spec_helper.rb
|
651
733
|
- spec/spec_helper.rb
|
@@ -662,16 +744,60 @@ test_files:
|
|
662
744
|
- spec/unit/client/active_record/apns/app_spec.rb
|
663
745
|
- spec/unit/client/active_record/apns/feedback_spec.rb
|
664
746
|
- spec/unit/client/active_record/apns/notification_spec.rb
|
747
|
+
- spec/unit/client/active_record/apns2/app_spec.rb
|
748
|
+
- spec/unit/client/active_record/apns2/notification_spec.rb
|
749
|
+
- spec/unit/client/active_record/apnsp8/notification_spec.rb
|
665
750
|
- spec/unit/client/active_record/app_spec.rb
|
666
751
|
- spec/unit/client/active_record/gcm/app_spec.rb
|
667
752
|
- spec/unit/client/active_record/gcm/notification_spec.rb
|
668
753
|
- spec/unit/client/active_record/notification_spec.rb
|
669
754
|
- spec/unit/client/active_record/pushy/app_spec.rb
|
670
755
|
- spec/unit/client/active_record/pushy/notification_spec.rb
|
756
|
+
- spec/unit/client/active_record/shared/app.rb
|
757
|
+
- spec/unit/client/active_record/shared/notification.rb
|
758
|
+
- spec/unit/client/active_record/webpush/app_spec.rb
|
759
|
+
- spec/unit/client/active_record/webpush/notification_spec.rb
|
671
760
|
- spec/unit/client/active_record/wns/badge_notification_spec.rb
|
672
761
|
- spec/unit/client/active_record/wns/raw_notification_spec.rb
|
673
762
|
- spec/unit/client/active_record/wpns/app_spec.rb
|
674
763
|
- spec/unit/client/active_record/wpns/notification_spec.rb
|
764
|
+
- spec/unit/client/redis/adm/app_spec.rb
|
765
|
+
- spec/unit/client/redis/adm/notification_spec.rb
|
766
|
+
- spec/unit/client/redis/apns/app_spec.rb
|
767
|
+
- spec/unit/client/redis/apns/feedback_spec.rb
|
768
|
+
- spec/unit/client/redis/apns/notification_spec.rb
|
769
|
+
- spec/unit/client/redis/apns2/app_spec.rb
|
770
|
+
- spec/unit/client/redis/apns2/notification_spec.rb
|
771
|
+
- spec/unit/client/redis/apnsp8/notification_spec.rb
|
772
|
+
- spec/unit/client/redis/app_spec.rb
|
773
|
+
- spec/unit/client/redis/gcm/app_spec.rb
|
774
|
+
- spec/unit/client/redis/gcm/notification_spec.rb
|
775
|
+
- spec/unit/client/redis/notification_spec.rb
|
776
|
+
- spec/unit/client/redis/pushy/app_spec.rb
|
777
|
+
- spec/unit/client/redis/pushy/notification_spec.rb
|
778
|
+
- spec/unit/client/redis/webpush/app_spec.rb
|
779
|
+
- spec/unit/client/redis/webpush/notification_spec.rb
|
780
|
+
- spec/unit/client/redis/wns/badge_notification_spec.rb
|
781
|
+
- spec/unit/client/redis/wns/raw_notification_spec.rb
|
782
|
+
- spec/unit/client/redis/wpns/app_spec.rb
|
783
|
+
- spec/unit/client/redis/wpns/notification_spec.rb
|
784
|
+
- spec/unit/client/shared/adm/app.rb
|
785
|
+
- spec/unit/client/shared/adm/notification.rb
|
786
|
+
- spec/unit/client/shared/apns/app.rb
|
787
|
+
- spec/unit/client/shared/apns/feedback.rb
|
788
|
+
- spec/unit/client/shared/apns/notification.rb
|
789
|
+
- spec/unit/client/shared/app.rb
|
790
|
+
- spec/unit/client/shared/gcm/app.rb
|
791
|
+
- spec/unit/client/shared/gcm/notification.rb
|
792
|
+
- spec/unit/client/shared/notification.rb
|
793
|
+
- spec/unit/client/shared/pushy/app.rb
|
794
|
+
- spec/unit/client/shared/pushy/notification.rb
|
795
|
+
- spec/unit/client/shared/webpush/app.rb
|
796
|
+
- spec/unit/client/shared/webpush/notification.rb
|
797
|
+
- spec/unit/client/shared/wns/badge_notification.rb
|
798
|
+
- spec/unit/client/shared/wns/raw_notification.rb
|
799
|
+
- spec/unit/client/shared/wpns/app.rb
|
800
|
+
- spec/unit/client/shared/wpns/notification.rb
|
675
801
|
- spec/unit/configuration_spec.rb
|
676
802
|
- spec/unit/daemon/adm/delivery_spec.rb
|
677
803
|
- spec/unit/daemon/apns/certificate_expired_error_spec.rb
|
@@ -690,11 +816,13 @@ test_files:
|
|
690
816
|
- spec/unit/daemon/pushy/delivery_spec.rb
|
691
817
|
- spec/unit/daemon/retryable_error_spec.rb
|
692
818
|
- spec/unit/daemon/service_config_methods_spec.rb
|
819
|
+
- spec/unit/daemon/shared/store.rb
|
693
820
|
- spec/unit/daemon/signal_handler_spec.rb
|
694
821
|
- spec/unit/daemon/store/active_record/reconnectable_spec.rb
|
695
822
|
- spec/unit/daemon/store/active_record_spec.rb
|
696
823
|
- spec/unit/daemon/store/redis_spec.rb
|
697
824
|
- spec/unit/daemon/tcp_connection_spec.rb
|
825
|
+
- spec/unit/daemon/webpush/delivery_spec.rb
|
698
826
|
- spec/unit/daemon/wns/delivery_spec.rb
|
699
827
|
- spec/unit/daemon/wns/post_request_spec.rb
|
700
828
|
- spec/unit/daemon/wpns/delivery_spec.rb
|
@@ -703,7 +831,6 @@ test_files:
|
|
703
831
|
- spec/unit/deprecation_spec.rb
|
704
832
|
- spec/unit/embed_spec.rb
|
705
833
|
- spec/unit/logger_spec.rb
|
706
|
-
- spec/unit/notification_shared.rb
|
707
834
|
- spec/unit/plugin_spec.rb
|
708
835
|
- spec/unit/push_spec.rb
|
709
836
|
- spec/unit/reflectable_spec.rb
|