hertz-fcm 1.0.2 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 859e232d238d12c21c1911f615d789e9bc036a9f02b18660a5aa0182428ff0fb
4
- data.tar.gz: f92fc84be1f2591116651996780179e91cbaeb318faf80a557e236c2cb0704ee
3
+ metadata.gz: 4e3ef88d00fea84a7810a4dc447cf178e974b9a7d3029ae892bf75fc8f0d5a68
4
+ data.tar.gz: 6990becdaea4e7b545ecf1acd7a7c5333946d0c695efbb78069a9db40207a363
5
5
  SHA512:
6
- metadata.gz: 3976f3512e83746eae546c59900d770ac02be3c190c07626ac13cf3551cbff7ba47c49f92926dfefd993da3ad07d66144656969e7347ee14b25b751946ede6c6
7
- data.tar.gz: efb3813adf10419a4424196a8f53df9f06629eb9db139fec89b2376b328f39ec3db5ea7b8b46d4e61b1b2769b32cc3d2bfef73b6b75f38d122031efffd0f57e0
6
+ metadata.gz: 521ebd821c8f7b24083f7a6374b5deaee9eee2ce413ee6379f1c9f5eb3f03a897f3248727a5e30bc8c6b88dda39e369651291818cd4f692e7f183329003825ad
7
+ data.tar.gz: 17180a9f0c8517d9ca942b8d4a8b11259451d50b4c2bd43769cec740075786120ebcb694a67a3521595244ade2ea33cd07cb300fb8ed1892e0b93054e9ade820
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hertz-fcm (1.0.1)
5
- fcm (>= 0.0.2, < 1)
4
+ hertz-fcm (1.1.0)
5
+ firebase_cloud_messenger (>= 0.4.0, < 1)
6
6
  hertz (~> 2.0)
7
7
  rails (>= 4.0.0, < 6)
8
8
 
@@ -50,6 +50,8 @@ GEM
50
50
  i18n (>= 0.7, < 2)
51
51
  minitest (~> 5.1)
52
52
  tzinfo (~> 1.1)
53
+ addressable (2.5.2)
54
+ public_suffix (>= 2.0.2, < 4.0)
53
55
  arel (9.0.0)
54
56
  ast (2.4.0)
55
57
  builder (3.2.3)
@@ -69,40 +71,54 @@ GEM
69
71
  factory_bot_rails (4.11.1)
70
72
  factory_bot (~> 4.11.1)
71
73
  railties (>= 3.0.0)
72
- fcm (0.0.2)
73
- httparty
74
- json
74
+ faraday (0.15.3)
75
+ multipart-post (>= 1.2, < 3)
76
+ firebase_cloud_messenger (0.4.0)
77
+ googleauth (~> 0.6)
78
+ json-schema (~> 2.8)
75
79
  globalid (0.4.1)
76
80
  activesupport (>= 4.2.0)
81
+ googleauth (0.6.6)
82
+ faraday (~> 0.12)
83
+ jwt (>= 1.4, < 3.0)
84
+ memoist (~> 0.12)
85
+ multi_json (~> 1.11)
86
+ os (>= 0.9, < 2.0)
87
+ signet (~> 0.7)
77
88
  hertz (2.0.0)
78
89
  rails (>= 4.0.0, < 6.0.0)
79
- httparty (0.16.2)
80
- multi_xml (>= 0.5.2)
81
90
  i18n (1.1.0)
82
91
  concurrent-ruby (~> 1.0)
83
92
  jaro_winkler (1.5.1)
84
93
  json (2.1.0)
94
+ json-schema (2.8.1)
95
+ addressable (>= 2.4)
96
+ jwt (2.1.0)
85
97
  loofah (2.2.2)
86
98
  crass (~> 1.0.2)
87
99
  nokogiri (>= 1.5.9)
88
- mail (2.7.0)
100
+ mail (2.7.1)
89
101
  mini_mime (>= 0.1.1)
90
102
  marcel (0.3.3)
91
103
  mimemagic (~> 0.3.2)
104
+ memoist (0.16.0)
92
105
  method_source (0.9.0)
93
106
  mimemagic (0.3.2)
94
107
  mini_mime (1.0.1)
95
108
  mini_portile2 (2.3.0)
96
109
  minitest (5.11.3)
97
- multi_xml (0.6.0)
110
+ multi_json (1.13.1)
111
+ multipart-post (2.0.0)
98
112
  nio4r (2.3.1)
99
113
  nokogiri (1.8.4)
100
114
  mini_portile2 (~> 2.3.0)
115
+ os (1.0.0)
101
116
  parallel (1.12.1)
102
117
  parser (2.5.1.2)
103
118
  ast (~> 2.4.0)
104
119
  pg (1.1.3)
105
120
  powerpack (0.1.2)
121
+ public_suffix (3.0.3)
106
122
  rack (2.0.5)
107
123
  rack-test (1.1.0)
108
124
  rack (>= 1.0, < 3)
@@ -163,6 +179,11 @@ GEM
163
179
  rubocop-rspec (1.29.1)
164
180
  rubocop (>= 0.58.0)
165
181
  ruby-progressbar (1.10.0)
182
+ signet (0.11.0)
183
+ addressable (~> 2.3)
184
+ faraday (~> 0.9)
185
+ jwt (>= 1.5, < 3.0)
186
+ multi_json (~> 1.10)
166
187
  simplecov (0.16.1)
167
188
  docile (~> 1.1)
168
189
  json (>= 1.8, < 3)
@@ -15,10 +15,9 @@ class PushNotificationSender
15
15
  return if notification.delivered_with?(:fcm)
16
16
  return unless REQUIRED_KEYS.all? { |key| notification.respond_to?(key) }
17
17
 
18
- fcm_client.send(
19
- notification.receiver.device_ids,
20
- options
21
- )
18
+ notification.receiver.device_ids.each do |device_id|
19
+ fcm_client.send(message: message(device_id))
20
+ end
22
21
 
23
22
  notification.mark_delivered_with(:fcm)
24
23
  end
@@ -26,19 +25,30 @@ class PushNotificationSender
26
25
  private
27
26
 
28
27
  def fcm_client
29
- @fcm_client ||= ::FCM.new(
30
- Hertz::Fcm.server_key
31
- )
28
+ @fcm_client ||= FirebaseCloudMessenger
32
29
  end
33
30
 
34
31
  def keys
35
32
  REQUIRED_KEYS + OPTIONAL_KEYS.select { |key| notification.respond_to?(key) }
36
33
  end
37
34
 
38
- def options
35
+ def message(token)
39
36
  {
40
- notification: keys.map { |key| [key, notification.send(key)] }.to_h,
41
- data: notification.send(:data)
37
+ data: keys.map { |key| [key, notification.send(key)] }.to_h
38
+ .merge!(notification.send(:data)),
39
+ apns: {
40
+ payload: {
41
+ aps: {
42
+ alert: {
43
+ title: notification.send(:title),
44
+ body: notification.send(:body)
45
+ },
46
+ sound: notification.send(:sound),
47
+ category: notification.send(:click_action)
48
+ }
49
+ }
50
+ },
51
+ token: token
42
52
  }
43
53
  end
44
54
  end
data/hertz-fcm.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ['lib']
23
23
 
24
- spec.add_dependency 'fcm', '>= 0.0.2', '< 1'
24
+ spec.add_dependency 'firebase_cloud_messenger', '>= 0.4.0', '< 1'
25
25
  spec.add_dependency 'hertz', '~> 2.0'
26
26
  spec.add_dependency 'rails', '>= 4.0.0', '< 6'
27
27
 
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Hertz::Fcm.configure do |config|
4
- # Your Firebase Cloud Messaging server key.
5
- config.server_key = 'my_server_key'
4
+ # Your Firebase Cloud Messaging configuration.
5
+ config.project_id = 'project_id'
6
+ config.google_private_key = 'private_key'
7
+ config.google_client_email = 'email'
6
8
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Hertz
4
4
  module Fcm
5
- VERSION = '1.0.2'
5
+ VERSION = '1.1.0'
6
6
  end
7
7
  end
data/lib/hertz/fcm.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fcm'
3
+ require 'firebase_cloud_messenger'
4
4
  require 'hertz'
5
5
 
6
6
  require 'hertz/fcm/engine'
@@ -8,11 +8,15 @@ require 'hertz/fcm/version'
8
8
 
9
9
  module Hertz
10
10
  module Fcm
11
- mattr_accessor :server_key
11
+ mattr_accessor :project_id, :google_private_key, :google_client_email
12
12
 
13
13
  class << self
14
14
  def configure
15
15
  yield(self)
16
+
17
+ FirebaseCloudMessenger.project_id = project_id
18
+ ENV['GOOGLE_PRIVATE_KEY'] = google_private_key
19
+ ENV['GOOGLE_CLIENT_EMAIL'] = google_client_email
16
20
  end
17
21
 
18
22
  def deliver_notification(notification)
metadata CHANGED
@@ -1,22 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hertz-fcm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Petkovic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-26 00:00:00.000000000 Z
11
+ date: 2018-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: fcm
14
+ name: firebase_cloud_messenger
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.2
19
+ version: 0.4.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '1'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.0.2
29
+ version: 0.4.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '1'