firebase-admin-sdk 0.1.0 → 0.1.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/README.md +12 -21
- data/firebase-admin-sdk.gemspec +1 -0
- data/lib/firebase-admin-sdk.rb +21 -1
- data/lib/firebase/admin/app.rb +0 -6
- data/lib/firebase/admin/auth/client.rb +8 -0
- data/lib/firebase/admin/auth/token_verifier.rb +1 -1
- data/lib/firebase/admin/auth/user_info.rb +6 -6
- data/lib/firebase/admin/auth/user_manager.rb +2 -2
- data/lib/firebase/admin/auth/user_record.rb +5 -5
- data/lib/firebase/admin/config.rb +4 -2
- data/lib/firebase/admin/internal/http_client.rb +1 -0
- data/lib/firebase/admin/messaging/android_config.rb +77 -0
- data/lib/firebase/admin/messaging/android_fcm_options.rb +19 -0
- data/lib/firebase/admin/messaging/android_notification.rb +221 -0
- data/lib/firebase/admin/messaging/apns_config.rb +38 -0
- data/lib/firebase/admin/messaging/apns_fcm_options.rb +27 -0
- data/lib/firebase/admin/messaging/apns_payload.rb +28 -0
- data/lib/firebase/admin/messaging/aps.rb +82 -0
- data/lib/firebase/admin/messaging/aps_alert.rb +110 -0
- data/lib/firebase/admin/messaging/client.rb +181 -0
- data/lib/firebase/admin/messaging/critical_sound.rb +37 -0
- data/lib/firebase/admin/messaging/error.rb +36 -0
- data/lib/firebase/admin/messaging/error_info.rb +25 -0
- data/lib/firebase/admin/messaging/fcm_options.rb +19 -0
- data/lib/firebase/admin/messaging/light_settings.rb +34 -0
- data/lib/firebase/admin/messaging/message.rb +83 -0
- data/lib/firebase/admin/messaging/message_encoder.rb +355 -0
- data/lib/firebase/admin/messaging/multicast_message.rb +67 -0
- data/lib/firebase/admin/messaging/notification.rb +34 -0
- data/lib/firebase/admin/messaging/topic_management_response.rb +41 -0
- data/lib/firebase/admin/messaging/utils.rb +78 -0
- data/lib/firebase/admin/version.rb +1 -1
- metadata +36 -2
@@ -0,0 +1,67 @@
|
|
1
|
+
module Firebase
|
2
|
+
module Admin
|
3
|
+
module Messaging
|
4
|
+
# A multicast message that can be sent via Firebase Cloud Messaging.
|
5
|
+
#
|
6
|
+
# Contains payload information as well as recipient information. In particular, the message must contain exactly
|
7
|
+
# one of token, topic or condition fields.
|
8
|
+
class MulticastMessage
|
9
|
+
# @return [Hash<String, String>, nil]
|
10
|
+
# A hash of data fields (optional). All keys and values must be strings.
|
11
|
+
attr_accessor :data
|
12
|
+
|
13
|
+
# @return [Notification, nil]
|
14
|
+
# A {Notification} (optional).
|
15
|
+
attr_accessor :notification
|
16
|
+
|
17
|
+
# @return [AndroidConfig, nil]
|
18
|
+
# An {AndroidConfig} (optional).
|
19
|
+
attr_accessor :android
|
20
|
+
|
21
|
+
# @return [APNSConfig, nil]
|
22
|
+
# An {APNSConfig} (optional).
|
23
|
+
attr_accessor :apns
|
24
|
+
|
25
|
+
# @return [FCMOptions, nil]
|
26
|
+
# An {FCMOptions} (optional).
|
27
|
+
attr_accessor :fcm_options
|
28
|
+
|
29
|
+
# @return [Array<String>, nil]
|
30
|
+
# Registration token of the device to which the message should be sent (optional).
|
31
|
+
attr_accessor :tokens
|
32
|
+
|
33
|
+
# Initializes a {Message}.
|
34
|
+
#
|
35
|
+
# @param [Hash<String, String>, nil] data
|
36
|
+
# A hash of data fields (optional). All keys and values must be strings.
|
37
|
+
# @param [Notification, nil] notification
|
38
|
+
# A {Notification} (optional).
|
39
|
+
# @param [AndroidConfig, nil] android
|
40
|
+
# An {AndroidConfig} (optional).
|
41
|
+
# @param [APNSConfig, nil] apns
|
42
|
+
# An {APNSConfig} (optional).
|
43
|
+
# @param [FCMOptions, nil] fcm_options
|
44
|
+
# An {FCMOptions} (optional).
|
45
|
+
# @param [Array<String>, nil] tokens
|
46
|
+
# A registration token of the device to send the message to (optional).
|
47
|
+
def initialize(
|
48
|
+
data: nil,
|
49
|
+
notification: nil,
|
50
|
+
android: nil,
|
51
|
+
apns: nil,
|
52
|
+
fcm_options: nil,
|
53
|
+
tokens: nil
|
54
|
+
)
|
55
|
+
self.data = data
|
56
|
+
self.notification = notification
|
57
|
+
self.android = android
|
58
|
+
self.apns = apns
|
59
|
+
self.fcm_options = fcm_options
|
60
|
+
self.tokens = tokens
|
61
|
+
self.topic = topic
|
62
|
+
self.condition = condition
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Firebase
|
2
|
+
module Admin
|
3
|
+
module Messaging
|
4
|
+
# A notification that can be included in a message.
|
5
|
+
class Notification
|
6
|
+
# @return [String, nil]
|
7
|
+
# Title of the notification.
|
8
|
+
attr_accessor :title
|
9
|
+
|
10
|
+
# @return [String, nil]
|
11
|
+
# Body of the notification.
|
12
|
+
attr_accessor :body
|
13
|
+
|
14
|
+
# @return [String, nil]
|
15
|
+
# Image url of the notification.
|
16
|
+
attr_accessor :image
|
17
|
+
|
18
|
+
# Initializes a {Notification}.
|
19
|
+
#
|
20
|
+
# @param [String, nil] title
|
21
|
+
# Title of the notification (optional).
|
22
|
+
# @param [String, nil] body
|
23
|
+
# Body of the notification (optional).
|
24
|
+
# @param [String, nil]
|
25
|
+
# Image url of the notification (optional).
|
26
|
+
def initialize(title: nil, body: nil, image: nil)
|
27
|
+
self.title = title
|
28
|
+
self.body = body
|
29
|
+
self.image = image
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Firebase
|
2
|
+
module Admin
|
3
|
+
module Messaging
|
4
|
+
# A response received from a topic management operation.
|
5
|
+
class TopicManagementResponse
|
6
|
+
# @return [Integer] The number of tokens successfully subscribed or unsubscribed.
|
7
|
+
attr_reader :success_count
|
8
|
+
|
9
|
+
# @return [Integer] The number of tokens that could not be subscribed or unsubscribed due to errors.
|
10
|
+
attr_reader :failure_count
|
11
|
+
|
12
|
+
# @return [Array<ErrorInfo>] An array of {ErrorInfo} objects (possibly empty).
|
13
|
+
attr_reader :errors
|
14
|
+
|
15
|
+
# Initializes a {TopicManagementResponse}.
|
16
|
+
#
|
17
|
+
# @param [Faraday::Response] response
|
18
|
+
# The response received from the api.
|
19
|
+
def initialize(response)
|
20
|
+
unless response.body.is_a?(Hash) && response.body["results"].is_a?(Array)
|
21
|
+
raise Error.new("Unexpected topic management response", response)
|
22
|
+
end
|
23
|
+
|
24
|
+
@success_count = 0
|
25
|
+
@failure_count = 0
|
26
|
+
@errors = []
|
27
|
+
|
28
|
+
results = response.body["results"]
|
29
|
+
results.each_with_index do |result, i|
|
30
|
+
if (reason = result["error"])
|
31
|
+
@failure_count += 1
|
32
|
+
@errors << ErrorInfo.new(index: i, reason: reason)
|
33
|
+
else
|
34
|
+
@success_count += 1
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module Firebase
|
2
|
+
module Admin
|
3
|
+
module Messaging
|
4
|
+
module Utils
|
5
|
+
def check_string(label, value, non_empty: false)
|
6
|
+
return nil unless value
|
7
|
+
raise ArgumentError, "#{label} must be a string." unless value.is_a?(String) || non_empty
|
8
|
+
raise ArgumentError, "#{label} must be a non-empty string." unless value.is_a?(String) || !non_empty
|
9
|
+
raise ArgumentError, "#{label} must be a non-empty string." if value.empty? && non_empty
|
10
|
+
value
|
11
|
+
end
|
12
|
+
|
13
|
+
def check_numeric(label, value)
|
14
|
+
return nil unless value
|
15
|
+
raise ArgumentError, "#{label} must be a number." unless value.is_a?(Numeric)
|
16
|
+
value
|
17
|
+
end
|
18
|
+
|
19
|
+
def check_string_hash(label, value)
|
20
|
+
return nil if value.nil?
|
21
|
+
raise ArgumentError, "#{label} must be a hash." unless value.is_a?(Hash)
|
22
|
+
return nil if value.empty?
|
23
|
+
raise ArgumentError, "#{label} must not contain non-string values" unless value.values.all?(String)
|
24
|
+
unless value.keys.all? { |k| k.is_a?(String) || k.is_a?(Symbol) }
|
25
|
+
raise ArgumentError, "#{label} must not contain non-string or non-symbol values"
|
26
|
+
end
|
27
|
+
value
|
28
|
+
end
|
29
|
+
|
30
|
+
def check_string_array(label, value)
|
31
|
+
return nil if value.nil?
|
32
|
+
raise ArgumentError, "#{label} must be an array of strings." unless value.is_a?(Array)
|
33
|
+
return nil if value.empty?
|
34
|
+
raise ArgumentError, "#{label} must not contain non-string values" unless value.all?(String)
|
35
|
+
value
|
36
|
+
end
|
37
|
+
|
38
|
+
def check_numeric_array(label, value)
|
39
|
+
return nil if value.nil?
|
40
|
+
raise ArgumentError, "#{label} must be an array of numbers." unless value.is_a?(Array)
|
41
|
+
return nil if value.empty?
|
42
|
+
raise ArgumentError, "#{label} must not contain non-numeric values" unless value.all?(Numeric)
|
43
|
+
value
|
44
|
+
end
|
45
|
+
|
46
|
+
def check_analytics_label(label, value)
|
47
|
+
return nil unless value
|
48
|
+
value = check_string(label, value)
|
49
|
+
raise ArgumentError, "#{label} is malformed" unless /\A[a-zA-Z0-9\-_.~%]{1,50}\Z/.match?(value)
|
50
|
+
value
|
51
|
+
end
|
52
|
+
|
53
|
+
def check_time(label, value)
|
54
|
+
return nil unless value
|
55
|
+
raise ArgumentError, "#{label} must be a time." unless value.is_a?(Time)
|
56
|
+
value
|
57
|
+
end
|
58
|
+
|
59
|
+
# @return [String, nil]
|
60
|
+
def check_color(label, value, allow_alpha: false, required: false)
|
61
|
+
return nil unless value || required
|
62
|
+
raise ArgumentError, "#{label} is required" unless value
|
63
|
+
raise ArgumentError, "#{label} must be a string" unless value.is_a?(String)
|
64
|
+
unless /\A#[0-9a-fA-F]{6}\Z/.match?(value) || (/\A#[0-9a-fA-F]{8}\Z/.match?(value) && allow_alpha)
|
65
|
+
raise ArgumentError, "#{label} must be in the form #RRGGBB" unless allow_alpha
|
66
|
+
raise ArgumentError, "#{label} must be in the form #RRGGBB or #RRGGBBAA"
|
67
|
+
end
|
68
|
+
value
|
69
|
+
end
|
70
|
+
|
71
|
+
def to_seconds_string(seconds)
|
72
|
+
has_nanos = (seconds - seconds.floor) > 0
|
73
|
+
format(has_nanos ? "%0.9fs" : "%ds", seconds)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: firebase-admin-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tariq Zaid
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: googleauth
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: hashie
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.1'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '4.1'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: jwt
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -203,6 +217,26 @@ files:
|
|
203
217
|
- lib/firebase/admin/error.rb
|
204
218
|
- lib/firebase/admin/gce.rb
|
205
219
|
- lib/firebase/admin/internal/http_client.rb
|
220
|
+
- lib/firebase/admin/messaging/android_config.rb
|
221
|
+
- lib/firebase/admin/messaging/android_fcm_options.rb
|
222
|
+
- lib/firebase/admin/messaging/android_notification.rb
|
223
|
+
- lib/firebase/admin/messaging/apns_config.rb
|
224
|
+
- lib/firebase/admin/messaging/apns_fcm_options.rb
|
225
|
+
- lib/firebase/admin/messaging/apns_payload.rb
|
226
|
+
- lib/firebase/admin/messaging/aps.rb
|
227
|
+
- lib/firebase/admin/messaging/aps_alert.rb
|
228
|
+
- lib/firebase/admin/messaging/client.rb
|
229
|
+
- lib/firebase/admin/messaging/critical_sound.rb
|
230
|
+
- lib/firebase/admin/messaging/error.rb
|
231
|
+
- lib/firebase/admin/messaging/error_info.rb
|
232
|
+
- lib/firebase/admin/messaging/fcm_options.rb
|
233
|
+
- lib/firebase/admin/messaging/light_settings.rb
|
234
|
+
- lib/firebase/admin/messaging/message.rb
|
235
|
+
- lib/firebase/admin/messaging/message_encoder.rb
|
236
|
+
- lib/firebase/admin/messaging/multicast_message.rb
|
237
|
+
- lib/firebase/admin/messaging/notification.rb
|
238
|
+
- lib/firebase/admin/messaging/topic_management_response.rb
|
239
|
+
- lib/firebase/admin/messaging/utils.rb
|
206
240
|
- lib/firebase/admin/version.rb
|
207
241
|
homepage: https://github.com/cheddar-me/firebase-admin-sdk-ruby
|
208
242
|
licenses:
|