Sha256: aafe94f8132bbdfe6c0d5b5ff73e2f4b6606d68507c931d92498f57281eb712e

Contents?: true

Size: 893 Bytes

Versions: 3

Compression:

Stored size: 893 Bytes

Contents

class Agilibox::FCM::Request < Agilibox::Service
  URL = "https://fcm.googleapis.com/fcm/send"

  class << self
    attr_writer :api_key

    def api_key
      @api_key ||= ENV["FCM_API_KEY"]
    end
  end

  initialize_with :request_body

  attr_reader :response_json

  def call
    response_body = HTTParty.post(URL,
      :body    => request_body.to_json,
      :headers => {
        "Content-Type"  => "application/json",
        "Authorization" => "key=#{self.class.api_key}",
      },
    ).body

    @response_json = JSON.parse(response_body).deep_symbolize_keys

    self
  end

  def ok?
    response_json[:success].positive? && response_json[:failure].zero?
  end

  def error?
    !ok?
  end

  def errors
    response_json[:results].map { |r| r[:error] }.compact
  end

  def invalid_token?
    errors.include?("NotRegistered") || errors.include?("InvalidRegistration")
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
agilibox-1.4.0 app/libs/agilibox/fcm/request.rb
agilibox-1.3.6 app/libs/agilibox/fcm/request.rb
agilibox-1.3.5 app/libs/agilibox/fcm/request.rb