hertz-fcm 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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'