class Rpush::Daemon::Gcm::Results

Attributes

failures[R]
successes[R]

Public Class Methods

new(results_data, registration_ids) click to toggle source
# File lib/rpush/daemon/gcm/delivery.rb, line 169
def initialize(results_data, registration_ids)
  @results_data = results_data
  @registration_ids = registration_ids
end

Public Instance Methods

process(failure_partitions = {}) click to toggle source
# File lib/rpush/daemon/gcm/delivery.rb, line 174
def process(failure_partitions = {}) # rubocop:disable Metrics/AbcSize
  @successes = []
  @failures = Failures.new
  failure_partitions.each_key do |category|
    failures[category] = []
  end

  @results_data.each_with_index do |result, index|
    entry = {
      registration_id: @registration_ids[index],
      index: index
    }
    if result['message_id']
      entry[:canonical_id] = result['registration_id'] if result['registration_id'].present?
      successes << entry
    elsif result['error']
      entry[:error] = result['error']
      failures << entry
      failure_partitions.each do |category, error_states|
        failures[category] << entry if error_states.include?(result['error'])
      end
    end
  end
  failures.all_failed = failures.count == @registration_ids.count
end