class JeraPush::Firebase::ApiResult

Attributes

registration_ids[RW]
result[RW]
topic[RW]

Public Class Methods

broadcast_result(message:, results:) click to toggle source
# File lib/jera_push/firebase/api_result.rb, line 19
def self.broadcast_result(message:, results:)
  return nil if results.blank? || message.blank?

  message.broadcast_result = []

  results.each do |result|
    obj = { platform: result.topic.split('_').last.titlecase }
    if result.success?
      message.status = :sent
    else
      message.status = :error
      obj[:message] = result.result['error']
    end
    obj[:firebase_id] = result.result['message_id']

    message.broadcast_result << obj
  end
  message.save
end
new(firebase_response, registration_ids: [], topic: nil) click to toggle source
# File lib/jera_push/firebase/api_result.rb, line 9
def initialize(firebase_response, registration_ids: [], topic: nil)
  @result = firebase_response
  @registration_ids = registration_ids
  @topic = topic
end

Public Instance Methods

result_to(message:) click to toggle source
# File lib/jera_push/firebase/api_result.rb, line 51
def result_to(message:)
  return if result.nil? || result['results'].nil?
  message.status = :sent
  message.failure_count += result['failure'].to_i
  message.success_count += result['success'].to_i
  message.save

  result['results'].each_with_index do |result, index|
    token = registration_ids[index]
    device = message.message_devices.joins(:device).find_by(jera_push_devices: { token: token } )

    set_result(result, device) if token && device
  end
end
set_result(result, device) click to toggle source
# File lib/jera_push/firebase/api_result.rb, line 66
def set_result(result, device)
  if result['error'] && !result['error'].empty?
    device.status = :error
    device.error_message = result['error']
  else
    device.status = :success
  end
  device.firebase_id = result['message_id']
  device.save
end
success?() click to toggle source
# File lib/jera_push/firebase/api_result.rb, line 15
def success?
  result && result.code == 200
end
topic_result(message:) click to toggle source
# File lib/jera_push/firebase/api_result.rb, line 39
def topic_result(message:)
  return if message.nil? || result.nil?
  if !result['error'].nil?
    message.status = :error
    message.error_message = result['error']
  else
    message.status = :sent
  end
  message.firebase_id = result['message_id']
  message.save
end