Sha256: 70c28e1a65288c2a879fd251144fc827471f91758dbb1be0095879167b863706

Contents?: true

Size: 1.28 KB

Versions: 17

Compression:

Stored size: 1.28 KB

Contents

require 'rest_client'
require 'json'

module RhoPush
  class Gcm
    class InvalidApiKey < Exception; end
    class GCMPingError < Exception; end

    def self.send_ping_to_device(api_key,params)
      RestClient.post(
        'https://android.googleapis.com/gcm/send', gcm_message(params).to_json,
        :authorization => "key=#{api_key}",
        :content_type => :json
      ) do |response, request, result, &block|
        # return exceptions based on response code & body
        case response.code
        when 200
          if response.body =~ /^Error=(.*)$/
            raise GCMPingError.new("GCM ping error: #{$1 || ''}")
          end
          response.return!(request, result, &block)
        when 401, 403
          raise InvalidApiKey.new("Invalid GCM api key. Obtain new api key from GCM service.")
        end
      end
    end

    def self.gcm_message(params)
      params.reject! {|k,v| v.nil? || v.length == 0}
      data = {}
      data['collapse_key'] = (rand * 100000000).to_i.to_s
      data['data'] = {}
      data['data']['sources'] = ''
      
      params.each do |k,v|
        if k == 'device_pin'
          data['registration_ids'] = [v.to_s]
          next
        end
        data['data'][k] = v
      end

      puts "Data to send: #{data}"
      
      data
    end
  end
end

Version data entries

17 entries across 17 versions & 2 rubygems

Version Path
rhodes-7.6.0 spec/server_spec/simple_rhogcm.rb
rhodes-7.5.1 spec/server_spec/simple_rhogcm.rb
rhodes-7.4.1 spec/server_spec/simple_rhogcm.rb
rhodes-7.1.17 spec/server_spec/simple_rhogcm.rb
rhodes-6.2.0 spec/server_spec/simple_rhogcm.rb
rhodes-6.0.11 spec/server_spec/simple_rhogcm.rb
rhodes-5.5.18 spec/server_spec/simple_rhogcm.rb
rhodes-5.5.17 spec/server_spec/simple_rhogcm.rb
rhodes-5.5.15 spec/server_spec/simple_rhogcm.rb
rhodes-5.5.0.22 spec/server_spec/simple_rhogcm.rb
rhodes-5.5.2 spec/server_spec/simple_rhogcm.rb
rhodes-5.5.0.7 spec/server_spec/simple_rhogcm.rb
rhodes-5.5.0.3 spec/server_spec/simple_rhogcm.rb
rhodes-5.5.0 spec/server_spec/simple_rhogcm.rb
tauplatform-1.0.3 spec/server_spec/simple_rhogcm.rb
tauplatform-1.0.2 spec/server_spec/simple_rhogcm.rb
tauplatform-1.0.1 spec/server_spec/simple_rhogcm.rb