fcm_pusher 0.0.0 → 0.0.1
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/lib/fcm_pusher.rb +68 -19
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5327ea046b784b0325bbccaee00aa607020bbe81
|
4
|
+
data.tar.gz: 5c737f21ae3edb37139ab18c44d3ba819d51336b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08c066ac68726ce362a7734fcdb2dbb010c1104709e55a6db9adfe7503143a20505e31336af7808d1fcc6b5cc235198b2c582e712b011178bfc25ee9e32c5632'
|
7
|
+
data.tar.gz: 26768c0888a6565274fd10f2158640437ee5db97f603e7cfb56b21dfddc39878d15ac037b36f8166571da812f46b137218353df29537599b50d625d9aa77d5b6
|
data/lib/fcm_pusher.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# This class initializes a
|
1
|
+
# This class initializes a FcmPusher object
|
2
2
|
# to be sended as a JSON POST request to Google FCM API Server
|
3
3
|
# Use the FCM APY_KEY and the FCM_TOKEN from an user or device
|
4
4
|
|
@@ -7,38 +7,87 @@ require 'json'
|
|
7
7
|
require 'net/https'
|
8
8
|
require 'uri'
|
9
9
|
|
10
|
-
|
11
10
|
class FcmPusher
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
module Priority
|
12
|
+
HIGH = "high"
|
13
|
+
NORMAL = "normal"
|
14
|
+
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
module Configuration
|
17
|
+
FCM_BASE_URL = "https://fcm.googleapis.com/fcm/send"
|
18
|
+
FCM_API_KEY = "AAAABxYhiPE:APA91bECmJXkhoPKHFqlVA4-y79YABxVMSBUJGMLC35dQwQG-03zCqHmt72r6Pv4eiO42tHb0QyYPW6giAoo8E7KTtZU6IgwA1SH6oK02GNZUgVBI3GwGOrUH1Da8xEqA1d0LjbJrXek"
|
19
|
+
end
|
20
|
+
|
21
|
+
attr_accessor :fcm_token, :registration_ids, :priority
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
@priority = Priority::HIGH
|
25
|
+
end
|
26
|
+
|
27
|
+
# send notification to a unique registered token
|
28
|
+
# optional parameters are icon, badge, sound and priority
|
29
|
+
def send_once(to, title, body, options = {})
|
30
|
+
@fcm_token = to
|
31
|
+
set_priority(priority) if !options[:priority].nil?
|
32
|
+
body = parse_once(to, title, body, options)
|
33
|
+
request(Configuration::FCM_BASE_URL, Configuration::FCM_API_KEY, body)
|
34
|
+
end
|
35
|
+
|
36
|
+
# send notifications to more than one registered token
|
37
|
+
# optional parameters are icon, badge, sound and priority
|
38
|
+
def send_all(registration_ids, title, body, options = {})
|
39
|
+
@registration_ids = registration_ids
|
40
|
+
set_priority(priority) if !options[:priority].nil?
|
41
|
+
body = parse_all(registration_ids, title, body, options)
|
42
|
+
request(Configuration::FCM_BASE_URL, Configuration::FCM_API_KEY, body)
|
43
|
+
end
|
19
44
|
|
20
|
-
|
21
|
-
|
45
|
+
# set the priority of the notification to be sended, the default value is Priority::HIGH
|
46
|
+
def set_priority(priority)
|
47
|
+
@priority = priority
|
48
|
+
end
|
49
|
+
|
50
|
+
def request(url, api_key, body)
|
51
|
+
uri = URI(url)
|
22
52
|
https = Net::HTTP.new(uri.host, uri.port)
|
23
53
|
https.use_ssl = true
|
24
|
-
request = Net::HTTP::Post.new(uri.path, {'Content-Type': 'application/json', 'Authorization': "key=#{
|
25
|
-
request.body =
|
26
|
-
response = https.request(request)
|
54
|
+
request = Net::HTTP::Post.new(uri.path, {'Content-Type': 'application/json', 'Authorization': "key=#{api_key}"})
|
55
|
+
request.body = body
|
56
|
+
response = https.request(request)
|
27
57
|
puts "Finished successfully with response #{response}"
|
28
58
|
rescue => exception
|
29
59
|
puts "Failed with #{exception}"
|
30
60
|
end
|
31
61
|
|
32
|
-
|
33
|
-
|
62
|
+
# parse json to be used in send_once
|
63
|
+
# optional parameters are icon, badge, sound and priority
|
64
|
+
def parse_once(to, title, body, options = {})
|
65
|
+
{
|
66
|
+
to: to,
|
34
67
|
notification: {
|
35
68
|
title: title,
|
36
69
|
body: body,
|
37
|
-
icon: icon,
|
38
|
-
badge: badge,
|
39
|
-
sound: sound
|
70
|
+
icon: options[:icon],
|
71
|
+
badge: options[:badge],
|
72
|
+
sound: options[:sound]
|
40
73
|
},
|
41
|
-
priority: priority
|
74
|
+
priority: options[:priority]
|
42
75
|
}.to_json
|
43
76
|
end
|
77
|
+
|
78
|
+
# parse json to be used in send_all
|
79
|
+
# optional parameters are icon, badge, sound and priority
|
80
|
+
def parse_all(registration_ids, title, body, options = {})
|
81
|
+
{
|
82
|
+
registration_ids: registration_ids,
|
83
|
+
notification: {
|
84
|
+
title: title,
|
85
|
+
body: body,
|
86
|
+
icon: options[:icon],
|
87
|
+
badge: options[:badge],
|
88
|
+
sound: options[:sound]
|
89
|
+
},
|
90
|
+
priority: options[:priority]
|
91
|
+
}.to_json
|
92
|
+
end
|
44
93
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fcm_pusher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amarildo Lucas
|
@@ -14,17 +14,18 @@ dependencies:
|
|
14
14
|
name: dotenv
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.2.1
|
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
|
-
version:
|
27
|
-
description:
|
26
|
+
version: 2.2.1
|
27
|
+
description: A Ruby gem to send push notifications from Firebase Cloud Messaging to
|
28
|
+
Android and iOS devices.
|
28
29
|
email: vmarildo@gmail.com
|
29
30
|
executables: []
|
30
31
|
extensions: []
|