From 0411042bc836d5f919f8b528006a9c785a62fa0e Mon Sep 17 00:00:00 2001 From: Tariq Zaid Date: Thu, 19 Oct 2023 16:48:31 +0200 Subject: [PATCH] Fixes to support batch message sending. --- .ruby-version | 1 + firebase-admin-sdk.gemspec | 2 +- lib/firebase-admin-sdk.rb | 2 ++ lib/firebase/admin/messaging/aps.rb | 8 ++++---- lib/firebase/admin/messaging/batch_response.rb | 6 +++--- lib/firebase/admin/messaging/client.rb | 4 ++-- lib/firebase/admin/messaging/utils.rb | 9 ++++----- lib/firebase/admin/version.rb | 2 +- 8 files changed, 18 insertions(+), 16 deletions(-) create mode 100644 .ruby-version diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..be94e6f --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +3.2.2 diff --git a/firebase-admin-sdk.gemspec b/firebase-admin-sdk.gemspec index 7c79dc6..cb21f0a 100644 --- a/firebase-admin-sdk.gemspec +++ b/firebase-admin-sdk.gemspec @@ -32,5 +32,5 @@ Gem::Specification.new do |spec| spec.add_development_dependency "fakefs" spec.add_development_dependency "climate_control" spec.add_development_dependency "standard" - spec.add_development_dependency "activesupport" + spec.add_development_dependency "activesupport", "~> 7.0.8" end diff --git a/lib/firebase-admin-sdk.rb b/lib/firebase-admin-sdk.rb index eb5d864..281c622 100644 --- a/lib/firebase-admin-sdk.rb +++ b/lib/firebase-admin-sdk.rb @@ -34,4 +34,6 @@ require_relative "firebase/admin/messaging/multicast_message" require_relative "firebase/admin/messaging/error_info" require_relative "firebase/admin/messaging/topic_management_response" +require_relative "firebase/admin/messaging/send_response" +require_relative "firebase/admin/messaging/batch_response" require_relative "firebase/admin/messaging/client" diff --git a/lib/firebase/admin/messaging/aps.rb b/lib/firebase/admin/messaging/aps.rb index 03410c4..a6b26e1 100644 --- a/lib/firebase/admin/messaging/aps.rb +++ b/lib/firebase/admin/messaging/aps.rb @@ -3,7 +3,7 @@ module Admin module Messaging # Aps dictionary to be included in an APNS payload. class APS - # @return [APSAlert, String, nil] + # @return [Firebase::Admin::Messaging::APSAlert, String, nil] # Alert to be included in the message. attr_accessor :alert @@ -12,7 +12,7 @@ class APS # remain unchanged. attr_accessor :badge - # @return [String, CriticalSound, nil] + # @return [Firebase::Admin::Messaging::CriticalSound, String, nil] # Sound to be played with the message. attr_accessor :sound @@ -39,12 +39,12 @@ class APS # Initializes an {APS}. # - # @param [APSAlert, String, nil] alert + # @param [Firebase::Admin::Messaging::APSAlert, String, nil] alert # Alert to be included in the message (optional). # @param [Integer, nil] badge # Badge to be displayed with the message (optional). # Set to 0 to remove the badge. When not specified, the badge will remain unchanged. - # @param [String, CriticalSound, nil] sound + # @param [Firebase::Admin::Messaging::CriticalSound, String, nil] sound # Sound to be played with the message (optional). # @param [Boolean, nil] content_available # Specifies whether to configure a background update notification (optional). diff --git a/lib/firebase/admin/messaging/batch_response.rb b/lib/firebase/admin/messaging/batch_response.rb index cdefcbc..4183f7c 100644 --- a/lib/firebase/admin/messaging/batch_response.rb +++ b/lib/firebase/admin/messaging/batch_response.rb @@ -5,15 +5,15 @@ module Messaging class BatchResponse # The list of responses (possibly empty). # @return [Array] - attr_reader responses + attr_reader :responses # The number of successful messages. # @return [Integer] - attr_reader success_count + attr_reader :success_count # The number of failed messages. # @return [Integer] - attr_reader failure_count + attr_reader :failure_count # A response received from a batch request. # diff --git a/lib/firebase/admin/messaging/client.rb b/lib/firebase/admin/messaging/client.rb index 069d7d1..afc34fa 100644 --- a/lib/firebase/admin/messaging/client.rb +++ b/lib/firebase/admin/messaging/client.rb @@ -49,7 +49,7 @@ def send_all(messages, dry_run: false) options = {skip_serialization: true} messages.each do |message| body = encode_message(message, dry_run: dry_run) - service.send_message(@project_id, body, options: options) do |res, err| + service.send_message(@project_path, body, options: options) do |res, err| wrapped_err = parse_fcm_error(err) unless err.nil? responses << SendResponse.new(message_id: res&.name, error: wrapped_err) end @@ -181,7 +181,7 @@ def encode_message(message, dry_run:) FCM_HOST = "https://fcm.googleapis.com" FCM_HEADERS = {"X-GOOG-API-FORMAT-VERSION": "2"} IID_HOST = "https://iid.googleapis.com" - IID_HEADERS = {"access_token_auth": "true"} + IID_HEADERS = {access_token_auth: "true"} FCM_ERROR_TYPES = { "APNS_AUTH_ERROR" => ThirdPartyAuthError, diff --git a/lib/firebase/admin/messaging/utils.rb b/lib/firebase/admin/messaging/utils.rb index 7a8e832..1affd20 100644 --- a/lib/firebase/admin/messaging/utils.rb +++ b/lib/firebase/admin/messaging/utils.rb @@ -61,11 +61,10 @@ def check_color(label, value, allow_alpha: false, required: false) return nil unless value || required raise ArgumentError, "#{label} is required" unless value raise ArgumentError, "#{label} must be a string" unless value.is_a?(String) - unless /\A#[0-9a-fA-F]{6}\Z/.match?(value) || (/\A#[0-9a-fA-F]{8}\Z/.match?(value) && allow_alpha) - raise ArgumentError, "#{label} must be in the form #RRGGBB" unless allow_alpha - raise ArgumentError, "#{label} must be in the form #RRGGBB or #RRGGBBAA" - end - value + return value if /\A#[0-9a-fA-F]{6}\Z/.match?(value) + return value if /\A#[0-9a-fA-F]{8}\Z/.match?(value) && allow_alpha + raise ArgumentError, "#{label} must be in the form #RRGGBB" unless allow_alpha + raise ArgumentError, "#{label} must be in the form #RRGGBB or #RRGGBBAA" end def to_seconds_string(seconds) diff --git a/lib/firebase/admin/version.rb b/lib/firebase/admin/version.rb index 6295b6b..9217121 100644 --- a/lib/firebase/admin/version.rb +++ b/lib/firebase/admin/version.rb @@ -2,6 +2,6 @@ module Firebase module Admin - VERSION = "0.2.0" + VERSION = "0.3.0" end end