rpush 7.0.1 → 8.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/CHANGELOG.md +28 -4
- data/README.md +38 -1
- data/lib/generators/rpush_migration_generator.rb +1 -0
- data/lib/generators/templates/rpush.rb +17 -0
- data/lib/generators/templates/rpush_7_1_0_updates.rb +12 -0
- data/lib/rpush/client/active_model/apns/notification.rb +0 -4
- data/lib/rpush/client/active_model/fcm/app.rb +20 -0
- data/lib/rpush/client/active_model/fcm/expiry_collapse_key_mutual_inclusion_validator.rb +14 -0
- data/lib/rpush/client/active_model/fcm/notification.rb +129 -0
- data/lib/rpush/client/active_model/fcm/notification_keys_in_allowed_list_validator.rb +20 -0
- data/lib/rpush/client/active_model.rb +5 -0
- data/lib/rpush/client/active_record/fcm/app.rb +11 -0
- data/lib/rpush/client/active_record/fcm/notification.rb +11 -0
- data/lib/rpush/client/active_record.rb +3 -0
- data/lib/rpush/client/redis/app.rb +2 -0
- data/lib/rpush/client/redis/fcm/app.rb +11 -0
- data/lib/rpush/client/redis/fcm/notification.rb +11 -0
- data/lib/rpush/client/redis.rb +3 -0
- data/lib/rpush/configuration.rb +1 -1
- data/lib/rpush/daemon/apns2/delivery.rb +0 -1
- data/lib/rpush/daemon/apnsp8/delivery.rb +0 -1
- data/lib/rpush/daemon/fcm/delivery.rb +162 -0
- data/lib/rpush/daemon/fcm.rb +9 -0
- data/lib/rpush/daemon/gcm/delivery.rb +1 -1
- data/lib/rpush/daemon/google_credential_cache.rb +41 -0
- data/lib/rpush/daemon/store/active_record.rb +15 -0
- data/lib/rpush/daemon/store/interface.rb +2 -2
- data/lib/rpush/daemon/store/redis.rb +13 -0
- data/lib/rpush/daemon/webpush/delivery.rb +2 -2
- data/lib/rpush/daemon.rb +4 -0
- data/lib/rpush/reflection_collection.rb +3 -2
- data/lib/rpush/version.rb +2 -2
- data/lib/rpush.rb +1 -0
- data/spec/functional/apns2_spec.rb +2 -6
- data/spec/functional/fcm_priority_spec.rb +46 -0
- data/spec/functional/fcm_spec.rb +77 -0
- data/spec/functional_spec_helper.rb +1 -1
- data/spec/spec_helper.rb +2 -1
- data/spec/support/active_record_setup.rb +3 -1
- data/spec/unit/client/active_record/fcm/app_spec.rb +6 -0
- data/spec/unit/client/active_record/fcm/notification_spec.rb +10 -0
- data/spec/unit/client/redis/fcm/app_spec.rb +5 -0
- data/spec/unit/client/redis/fcm/notification_spec.rb +5 -0
- data/spec/unit/client/shared/apns/notification.rb +0 -15
- data/spec/unit/client/shared/fcm/app.rb +4 -0
- data/spec/unit/client/shared/fcm/notification.rb +92 -0
- data/spec/unit/configuration_spec.rb +1 -1
- data/spec/unit/daemon/apnsp8/delivery_spec.rb +1 -1
- data/spec/unit/daemon/fcm/delivery_spec.rb +127 -0
- data/spec/unit/daemon/service_config_methods_spec.rb +1 -1
- data/spec/unit/daemon/tcp_connection_spec.rb +8 -7
- data/spec/unit/daemon/wns/delivery_spec.rb +1 -1
- data/spec/unit/logger_spec.rb +1 -1
- data/spec/unit_spec_helper.rb +1 -1
- metadata +81 -17
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'unit_spec_helper'
|
2
|
+
|
3
|
+
describe Rpush::Daemon::Fcm::Delivery do
|
4
|
+
let(:app) { Rpush::Fcm::App.create!(name: 'MyApp', firebase_project_id: 'abc123', json_key:'{}') }
|
5
|
+
let(:notification) { Rpush::Fcm::Notification.create!(app: app, device_token: 'xyz', deliver_after: Time.now) }
|
6
|
+
let(:logger) { double(error: nil, info: nil, warn: nil) }
|
7
|
+
let(:response) { double(code: 200, header: {}) }
|
8
|
+
let(:http) { double(shutdown: nil, request: response) }
|
9
|
+
let(:now) { Time.parse('2012-10-14 00:00:00') }
|
10
|
+
let(:batch) { double(mark_failed: nil, mark_delivered: nil, mark_retryable: nil, notification_processed: nil) }
|
11
|
+
let(:delivery) { Rpush::Daemon::Fcm::Delivery.new(app, http, notification, batch) }
|
12
|
+
let(:store) { double(create_fcm_notification: double(id: 2)) }
|
13
|
+
|
14
|
+
def perform
|
15
|
+
delivery.perform
|
16
|
+
end
|
17
|
+
|
18
|
+
def perform_with_rescue
|
19
|
+
expect { perform }.to raise_error(StandardError)
|
20
|
+
end
|
21
|
+
|
22
|
+
before do
|
23
|
+
allow(delivery).to receive_messages(reflect: nil)
|
24
|
+
allow(Rpush::Daemon).to receive_messages(store: store)
|
25
|
+
allow(Time).to receive_messages(now: now)
|
26
|
+
allow(Rpush).to receive_messages(logger: logger)
|
27
|
+
allow_any_instance_of(Rpush::Daemon::Fcm::Delivery).to receive_messages(obtain_access_token: "access_token")
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'a 200 response' do
|
31
|
+
before do
|
32
|
+
allow(response).to receive_messages(code: 200)
|
33
|
+
allow(response).to receive_messages(body: nil)
|
34
|
+
allow(notification).to receive_messages(device_token: '1')
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'reflects on ID which successfully received the notification' do
|
38
|
+
expect(delivery).to receive(:reflect).with(:fcm_delivered_to_recipient, notification)
|
39
|
+
perform
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'marks the notification as delivered' do
|
43
|
+
expect(delivery).to receive(:mark_delivered)
|
44
|
+
perform
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'logs that the notification was delivered' do
|
48
|
+
expect(logger).to receive(:info).with("[MyApp] #{notification.id} sent to 1")
|
49
|
+
perform
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe 'all deliveries failed with Unavailable or InternalServerError 503' do
|
54
|
+
before do
|
55
|
+
allow(notification).to receive_messages(device_token: '1')
|
56
|
+
allow(response).to receive_messages(code: 503, body: nil)
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'reflects on any IDs which failed to receive the notification' do
|
60
|
+
pending("Determine the correct cases where FCM should send fcm_failed_to_recipient")
|
61
|
+
expect(delivery).to receive(:reflect).with(:fcm_failed_to_recipient, notification)
|
62
|
+
perform
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'retries the notification respecting the Retry-After header' do
|
66
|
+
allow(response).to receive_messages(header: { 'retry-after' => 10 })
|
67
|
+
expect(delivery).to receive(:mark_retryable).with(notification, now + 10.seconds)
|
68
|
+
perform
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'retries the notification using exponential back-off if the Retry-After header is not present' do
|
72
|
+
expect(delivery).to receive(:mark_retryable).with(notification, now + 2)
|
73
|
+
perform
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'does not mark the notification as failed' do
|
77
|
+
expect(delivery).not_to receive(:mark_failed)
|
78
|
+
perform
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'logs that the notification will be retried' do
|
82
|
+
notification.retries = 1
|
83
|
+
notification.deliver_after = now + 2
|
84
|
+
expect(Rpush.logger).to receive(:warn).with("[MyApp] FCM responded with an Service Unavailable Error. Notification #{notification.id} will be retried after 2012-10-14 00:00:02 (retry 1).")
|
85
|
+
perform
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe 'all deliveries failed with Unavailable or InternalServerError 500' do
|
90
|
+
before do
|
91
|
+
allow(notification).to receive_messages(device_token: '1')
|
92
|
+
allow(response).to receive_messages(code: 500, body: nil)
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'logs a warning that the notification has been re-queued.' do
|
96
|
+
notification.retries = 3
|
97
|
+
notification.deliver_after = now + 2**3
|
98
|
+
expect(Rpush.logger).to receive(:warn).with("[MyApp] FCM responded with an Internal Error. Notification #{notification.id} will be retried after #{(now + 2**3).strftime('%Y-%m-%d %H:%M:%S')} (retry 3).")
|
99
|
+
perform
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'retries the notification in accordance with the exponential back-off strategy.' do
|
103
|
+
notification.update_attribute(:retries, 2)
|
104
|
+
expect(delivery).to receive(:mark_retryable).with(notification, now + 2**3)
|
105
|
+
perform
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe 'all deliveries failed with invalid token' do
|
110
|
+
before do
|
111
|
+
allow(notification).to receive_messages(device_token: '1')
|
112
|
+
allow(response).to receive_messages(code: 404, body: { error: { status: 'NOT_FOUND', message: 'Requested entity was not found.' } }.to_json)
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'reflects on invalid IDs' do
|
116
|
+
expect(delivery).to receive(:reflect).with(:fcm_invalid_device_token, app, "NOT_FOUND: Requested entity was not found.", '1')
|
117
|
+
perform_with_rescue
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'marks a notification as failed if any ids are invalid' do
|
121
|
+
expect(delivery).to receive(:mark_failed)
|
122
|
+
expect(delivery).not_to receive(:mark_retryable)
|
123
|
+
expect(store).not_to receive(:create_fcm_notification)
|
124
|
+
perform_with_rescue
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
@@ -23,7 +23,7 @@ describe Rpush::Daemon::ServiceConfigMethods do
|
|
23
23
|
ServiceConfigMethodsSpec.dispatcher :http, an: :option
|
24
24
|
app = double
|
25
25
|
dispatcher = double
|
26
|
-
expect(Rpush::Daemon::Dispatcher::Http).to receive(:new).with(app, ServiceConfigMethodsSpec::Delivery, an: :option).and_return(dispatcher)
|
26
|
+
expect(Rpush::Daemon::Dispatcher::Http).to receive(:new).with(app, ServiceConfigMethodsSpec::Delivery, {an: :option}).and_return(dispatcher)
|
27
27
|
expect(ServiceConfigMethodsSpec.new_dispatcher(app)).to eq dispatcher
|
28
28
|
end
|
29
29
|
|
@@ -15,6 +15,7 @@ describe Rpush::Daemon::TcpConnection do
|
|
15
15
|
let(:connection) { Rpush::Daemon::TcpConnection.new(app, host, port) }
|
16
16
|
|
17
17
|
before do
|
18
|
+
allow(x509_certificate).to receive(:not_after).and_return(Time.now + 1.year)
|
18
19
|
allow(OpenSSL::SSL::SSLContext).to receive_messages(new: ssl_context)
|
19
20
|
allow(OpenSSL::PKey::RSA).to receive_messages(new: rsa_key)
|
20
21
|
allow(OpenSSL::X509::Certificate).to receive_messages(new: x509_certificate)
|
@@ -83,31 +84,31 @@ describe Rpush::Daemon::TcpConnection do
|
|
83
84
|
|
84
85
|
describe 'certificate expiry' do
|
85
86
|
it 'reflects if the certificate will expire soon' do
|
86
|
-
cert =
|
87
|
+
cert = x509_certificate
|
87
88
|
expect(connection).to receive(:reflect).with(:ssl_certificate_will_expire, app, cert.not_after)
|
88
89
|
Timecop.freeze(cert.not_after - 3.days) { connection.connect }
|
89
90
|
end
|
90
91
|
|
91
92
|
it 'logs that the certificate will expire soon' do
|
92
|
-
cert =
|
93
|
-
expect(logger).to receive(:warn).with("[#{app.name}] Certificate will expire at
|
93
|
+
cert = x509_certificate
|
94
|
+
expect(logger).to receive(:warn).with("[#{app.name}] Certificate will expire at #{cert.not_after.utc}.")
|
94
95
|
Timecop.freeze(cert.not_after - 3.days) { connection.connect }
|
95
96
|
end
|
96
97
|
|
97
98
|
it 'does not reflect if the certificate will not expire soon' do
|
98
|
-
cert =
|
99
|
+
cert = x509_certificate
|
99
100
|
expect(connection).not_to receive(:reflect).with(:ssl_certificate_will_expire, app, kind_of(Time))
|
100
101
|
Timecop.freeze(cert.not_after - 2.months) { connection.connect }
|
101
102
|
end
|
102
103
|
|
103
104
|
it 'logs that the certificate has expired' do
|
104
|
-
cert =
|
105
|
-
expect(logger).to receive(:error).with("[#{app.name}] Certificate expired at
|
105
|
+
cert = x509_certificate
|
106
|
+
expect(logger).to receive(:error).with("[#{app.name}] Certificate expired at #{cert.not_after.utc}.")
|
106
107
|
Timecop.freeze(cert.not_after + 1.day) { connection.connect rescue Rpush::CertificateExpiredError }
|
107
108
|
end
|
108
109
|
|
109
110
|
it 'raises an error if the certificate has expired' do
|
110
|
-
cert =
|
111
|
+
cert = x509_certificate
|
111
112
|
Timecop.freeze(cert.not_after + 1.day) do
|
112
113
|
expect { connection.connect }.to raise_error(Rpush::CertificateExpiredError)
|
113
114
|
end
|
@@ -50,7 +50,7 @@ describe Rpush::Daemon::Wns::Delivery do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'set the access token for the app' do
|
53
|
-
expect(delivery).to receive(:update_access_token).with("access_token" => "dummy_access_token", "expires_in" => 60)
|
53
|
+
expect(delivery).to receive(:update_access_token).with({"access_token" => "dummy_access_token", "expires_in" => 60})
|
54
54
|
expect(store).to receive(:update_app).with app
|
55
55
|
perform
|
56
56
|
end
|
data/spec/unit/logger_spec.rb
CHANGED
@@ -92,7 +92,7 @@ describe Rpush::Logger do
|
|
92
92
|
now = Time.now
|
93
93
|
allow(Time).to receive(:now).and_return(now)
|
94
94
|
logger = Rpush::Logger.new
|
95
|
-
expect(@logger).to receive(:info).with(/#{Regexp.escape("[#{now.
|
95
|
+
expect(@logger).to receive(:info).with(/#{Regexp.escape("[#{now.to_formatted_s(:db)}]")}/)
|
96
96
|
logger.info("blah")
|
97
97
|
end
|
98
98
|
|
data/spec/unit_spec_helper.rb
CHANGED
@@ -12,7 +12,7 @@ RSpec.configure do |config|
|
|
12
12
|
config.before(:each) do
|
13
13
|
Modis.with_connection do |redis|
|
14
14
|
redis.keys('rpush:*').each { |key| redis.del(key) }
|
15
|
-
end if redis?
|
15
|
+
end if redis? && unit_example?(self.class.metadata)
|
16
16
|
|
17
17
|
if active_record? && unit_example?(self.class.metadata)
|
18
18
|
connection = ActiveRecord::Base.connection
|
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: 8.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian Leitch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-09-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -79,6 +79,9 @@ dependencies:
|
|
79
79
|
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: '5.2'
|
82
|
+
- - "<"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 7.1.0
|
82
85
|
type: :runtime
|
83
86
|
prerelease: false
|
84
87
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -86,6 +89,9 @@ dependencies:
|
|
86
89
|
- - ">="
|
87
90
|
- !ruby/object:Gem::Version
|
88
91
|
version: '5.2'
|
92
|
+
- - "<"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 7.1.0
|
89
95
|
- !ruby/object:Gem::Dependency
|
90
96
|
name: thor
|
91
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -135,19 +141,47 @@ dependencies:
|
|
135
141
|
- !ruby/object:Gem::Version
|
136
142
|
version: '0'
|
137
143
|
- !ruby/object:Gem::Dependency
|
138
|
-
name:
|
144
|
+
name: web-push
|
139
145
|
requirement: !ruby/object:Gem::Requirement
|
140
146
|
requirements:
|
141
|
-
- - "
|
147
|
+
- - ">="
|
142
148
|
- !ruby/object:Gem::Version
|
143
|
-
version: '
|
149
|
+
version: '0'
|
144
150
|
type: :runtime
|
145
151
|
prerelease: false
|
146
152
|
version_requirements: !ruby/object:Gem::Requirement
|
147
153
|
requirements:
|
148
|
-
- - "
|
154
|
+
- - ">="
|
149
155
|
- !ruby/object:Gem::Version
|
150
|
-
version: '
|
156
|
+
version: '0'
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: googleauth
|
159
|
+
requirement: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - ">="
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
164
|
+
type: :runtime
|
165
|
+
prerelease: false
|
166
|
+
version_requirements: !ruby/object:Gem::Requirement
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '0'
|
171
|
+
- !ruby/object:Gem::Dependency
|
172
|
+
name: debug
|
173
|
+
requirement: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
type: :development
|
179
|
+
prerelease: false
|
180
|
+
version_requirements: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
151
185
|
- !ruby/object:Gem::Dependency
|
152
186
|
name: rake
|
153
187
|
requirement: !ruby/object:Gem::Requirement
|
@@ -166,16 +200,16 @@ dependencies:
|
|
166
200
|
name: rspec
|
167
201
|
requirement: !ruby/object:Gem::Requirement
|
168
202
|
requirements:
|
169
|
-
- - "
|
203
|
+
- - ">="
|
170
204
|
- !ruby/object:Gem::Version
|
171
|
-
version:
|
205
|
+
version: '0'
|
172
206
|
type: :development
|
173
207
|
prerelease: false
|
174
208
|
version_requirements: !ruby/object:Gem::Requirement
|
175
209
|
requirements:
|
176
|
-
- - "
|
210
|
+
- - ">="
|
177
211
|
- !ruby/object:Gem::Version
|
178
|
-
version:
|
212
|
+
version: '0'
|
179
213
|
- !ruby/object:Gem::Dependency
|
180
214
|
name: database_cleaner
|
181
215
|
requirement: !ruby/object:Gem::Requirement
|
@@ -264,16 +298,16 @@ dependencies:
|
|
264
298
|
name: codeclimate-test-reporter
|
265
299
|
requirement: !ruby/object:Gem::Requirement
|
266
300
|
requirements:
|
267
|
-
- -
|
301
|
+
- - '='
|
268
302
|
- !ruby/object:Gem::Version
|
269
|
-
version:
|
303
|
+
version: 1.0.7
|
270
304
|
type: :development
|
271
305
|
prerelease: false
|
272
306
|
version_requirements: !ruby/object:Gem::Requirement
|
273
307
|
requirements:
|
274
|
-
- -
|
308
|
+
- - '='
|
275
309
|
- !ruby/object:Gem::Version
|
276
|
-
version:
|
310
|
+
version: 1.0.7
|
277
311
|
- !ruby/object:Gem::Dependency
|
278
312
|
name: simplecov
|
279
313
|
requirement: !ruby/object:Gem::Requirement
|
@@ -413,6 +447,7 @@ files:
|
|
413
447
|
- lib/generators/templates/rpush_4_1_0_updates.rb
|
414
448
|
- lib/generators/templates/rpush_4_1_1_updates.rb
|
415
449
|
- lib/generators/templates/rpush_4_2_0_updates.rb
|
450
|
+
- lib/generators/templates/rpush_7_1_0_updates.rb
|
416
451
|
- lib/rpush.rb
|
417
452
|
- lib/rpush/apns_feedback.rb
|
418
453
|
- lib/rpush/cli.rb
|
@@ -429,6 +464,10 @@ files:
|
|
429
464
|
- lib/rpush/client/active_model/apnsp8/app.rb
|
430
465
|
- lib/rpush/client/active_model/apnsp8/notification.rb
|
431
466
|
- lib/rpush/client/active_model/certificate_private_key_validator.rb
|
467
|
+
- lib/rpush/client/active_model/fcm/app.rb
|
468
|
+
- lib/rpush/client/active_model/fcm/expiry_collapse_key_mutual_inclusion_validator.rb
|
469
|
+
- lib/rpush/client/active_model/fcm/notification.rb
|
470
|
+
- lib/rpush/client/active_model/fcm/notification_keys_in_allowed_list_validator.rb
|
432
471
|
- lib/rpush/client/active_model/gcm/app.rb
|
433
472
|
- lib/rpush/client/active_model/gcm/expiry_collapse_key_mutual_inclusion_validator.rb
|
434
473
|
- lib/rpush/client/active_model/gcm/notification.rb
|
@@ -456,6 +495,8 @@ files:
|
|
456
495
|
- lib/rpush/client/active_record/apnsp8/app.rb
|
457
496
|
- lib/rpush/client/active_record/apnsp8/notification.rb
|
458
497
|
- lib/rpush/client/active_record/app.rb
|
498
|
+
- lib/rpush/client/active_record/fcm/app.rb
|
499
|
+
- lib/rpush/client/active_record/fcm/notification.rb
|
459
500
|
- lib/rpush/client/active_record/gcm/app.rb
|
460
501
|
- lib/rpush/client/active_record/gcm/notification.rb
|
461
502
|
- lib/rpush/client/active_record/notification.rb
|
@@ -480,6 +521,8 @@ files:
|
|
480
521
|
- lib/rpush/client/redis/apnsp8/app.rb
|
481
522
|
- lib/rpush/client/redis/apnsp8/notification.rb
|
482
523
|
- lib/rpush/client/redis/app.rb
|
524
|
+
- lib/rpush/client/redis/fcm/app.rb
|
525
|
+
- lib/rpush/client/redis/fcm/notification.rb
|
483
526
|
- lib/rpush/client/redis/gcm/app.rb
|
484
527
|
- lib/rpush/client/redis/gcm/notification.rb
|
485
528
|
- lib/rpush/client/redis/notification.rb
|
@@ -517,9 +560,12 @@ files:
|
|
517
560
|
- lib/rpush/daemon/dispatcher/tcp.rb
|
518
561
|
- lib/rpush/daemon/dispatcher_loop.rb
|
519
562
|
- lib/rpush/daemon/errors.rb
|
563
|
+
- lib/rpush/daemon/fcm.rb
|
564
|
+
- lib/rpush/daemon/fcm/delivery.rb
|
520
565
|
- lib/rpush/daemon/feeder.rb
|
521
566
|
- lib/rpush/daemon/gcm.rb
|
522
567
|
- lib/rpush/daemon/gcm/delivery.rb
|
568
|
+
- lib/rpush/daemon/google_credential_cache.rb
|
523
569
|
- lib/rpush/daemon/interruptible_sleep.rb
|
524
570
|
- lib/rpush/daemon/loggable.rb
|
525
571
|
- lib/rpush/daemon/proc_title.rb
|
@@ -569,6 +615,8 @@ files:
|
|
569
615
|
- spec/functional/apns_spec.rb
|
570
616
|
- spec/functional/cli_spec.rb
|
571
617
|
- spec/functional/embed_spec.rb
|
618
|
+
- spec/functional/fcm_priority_spec.rb
|
619
|
+
- spec/functional/fcm_spec.rb
|
572
620
|
- spec/functional/gcm_priority_spec.rb
|
573
621
|
- spec/functional/gcm_spec.rb
|
574
622
|
- spec/functional/new_app_spec.rb
|
@@ -596,6 +644,8 @@ files:
|
|
596
644
|
- spec/unit/client/active_record/apns2/notification_spec.rb
|
597
645
|
- spec/unit/client/active_record/apnsp8/notification_spec.rb
|
598
646
|
- spec/unit/client/active_record/app_spec.rb
|
647
|
+
- spec/unit/client/active_record/fcm/app_spec.rb
|
648
|
+
- spec/unit/client/active_record/fcm/notification_spec.rb
|
599
649
|
- spec/unit/client/active_record/gcm/app_spec.rb
|
600
650
|
- spec/unit/client/active_record/gcm/notification_spec.rb
|
601
651
|
- spec/unit/client/active_record/notification_spec.rb
|
@@ -618,6 +668,8 @@ files:
|
|
618
668
|
- spec/unit/client/redis/apns2/notification_spec.rb
|
619
669
|
- spec/unit/client/redis/apnsp8/notification_spec.rb
|
620
670
|
- spec/unit/client/redis/app_spec.rb
|
671
|
+
- spec/unit/client/redis/fcm/app_spec.rb
|
672
|
+
- spec/unit/client/redis/fcm/notification_spec.rb
|
621
673
|
- spec/unit/client/redis/gcm/app_spec.rb
|
622
674
|
- spec/unit/client/redis/gcm/notification_spec.rb
|
623
675
|
- spec/unit/client/redis/notification_spec.rb
|
@@ -635,6 +687,8 @@ files:
|
|
635
687
|
- spec/unit/client/shared/apns/feedback.rb
|
636
688
|
- spec/unit/client/shared/apns/notification.rb
|
637
689
|
- spec/unit/client/shared/app.rb
|
690
|
+
- spec/unit/client/shared/fcm/app.rb
|
691
|
+
- spec/unit/client/shared/fcm/notification.rb
|
638
692
|
- spec/unit/client/shared/gcm/app.rb
|
639
693
|
- spec/unit/client/shared/gcm/notification.rb
|
640
694
|
- spec/unit/client/shared/notification.rb
|
@@ -659,6 +713,7 @@ files:
|
|
659
713
|
- spec/unit/daemon/dispatcher/http_spec.rb
|
660
714
|
- spec/unit/daemon/dispatcher/tcp_spec.rb
|
661
715
|
- spec/unit/daemon/dispatcher_loop_spec.rb
|
716
|
+
- spec/unit/daemon/fcm/delivery_spec.rb
|
662
717
|
- spec/unit/daemon/feeder_spec.rb
|
663
718
|
- spec/unit/daemon/gcm/delivery_spec.rb
|
664
719
|
- spec/unit/daemon/proc_title_spec.rb
|
@@ -706,14 +761,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
706
761
|
requirements:
|
707
762
|
- - ">="
|
708
763
|
- !ruby/object:Gem::Version
|
709
|
-
version: 2.
|
764
|
+
version: 2.7.0
|
710
765
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
711
766
|
requirements:
|
712
767
|
- - ">="
|
713
768
|
- !ruby/object:Gem::Version
|
714
769
|
version: '0'
|
715
770
|
requirements: []
|
716
|
-
rubygems_version: 3.3.
|
771
|
+
rubygems_version: 3.3.3
|
717
772
|
signing_key:
|
718
773
|
specification_version: 4
|
719
774
|
summary: The push notification service for Ruby.
|
@@ -724,6 +779,8 @@ test_files:
|
|
724
779
|
- spec/functional/apns_spec.rb
|
725
780
|
- spec/functional/cli_spec.rb
|
726
781
|
- spec/functional/embed_spec.rb
|
782
|
+
- spec/functional/fcm_priority_spec.rb
|
783
|
+
- spec/functional/fcm_spec.rb
|
727
784
|
- spec/functional/gcm_priority_spec.rb
|
728
785
|
- spec/functional/gcm_spec.rb
|
729
786
|
- spec/functional/new_app_spec.rb
|
@@ -751,6 +808,8 @@ test_files:
|
|
751
808
|
- spec/unit/client/active_record/apns2/notification_spec.rb
|
752
809
|
- spec/unit/client/active_record/apnsp8/notification_spec.rb
|
753
810
|
- spec/unit/client/active_record/app_spec.rb
|
811
|
+
- spec/unit/client/active_record/fcm/app_spec.rb
|
812
|
+
- spec/unit/client/active_record/fcm/notification_spec.rb
|
754
813
|
- spec/unit/client/active_record/gcm/app_spec.rb
|
755
814
|
- spec/unit/client/active_record/gcm/notification_spec.rb
|
756
815
|
- spec/unit/client/active_record/notification_spec.rb
|
@@ -773,6 +832,8 @@ test_files:
|
|
773
832
|
- spec/unit/client/redis/apns2/notification_spec.rb
|
774
833
|
- spec/unit/client/redis/apnsp8/notification_spec.rb
|
775
834
|
- spec/unit/client/redis/app_spec.rb
|
835
|
+
- spec/unit/client/redis/fcm/app_spec.rb
|
836
|
+
- spec/unit/client/redis/fcm/notification_spec.rb
|
776
837
|
- spec/unit/client/redis/gcm/app_spec.rb
|
777
838
|
- spec/unit/client/redis/gcm/notification_spec.rb
|
778
839
|
- spec/unit/client/redis/notification_spec.rb
|
@@ -790,6 +851,8 @@ test_files:
|
|
790
851
|
- spec/unit/client/shared/apns/feedback.rb
|
791
852
|
- spec/unit/client/shared/apns/notification.rb
|
792
853
|
- spec/unit/client/shared/app.rb
|
854
|
+
- spec/unit/client/shared/fcm/app.rb
|
855
|
+
- spec/unit/client/shared/fcm/notification.rb
|
793
856
|
- spec/unit/client/shared/gcm/app.rb
|
794
857
|
- spec/unit/client/shared/gcm/notification.rb
|
795
858
|
- spec/unit/client/shared/notification.rb
|
@@ -814,6 +877,7 @@ test_files:
|
|
814
877
|
- spec/unit/daemon/dispatcher/http_spec.rb
|
815
878
|
- spec/unit/daemon/dispatcher/tcp_spec.rb
|
816
879
|
- spec/unit/daemon/dispatcher_loop_spec.rb
|
880
|
+
- spec/unit/daemon/fcm/delivery_spec.rb
|
817
881
|
- spec/unit/daemon/feeder_spec.rb
|
818
882
|
- spec/unit/daemon/gcm/delivery_spec.rb
|
819
883
|
- spec/unit/daemon/proc_title_spec.rb
|