Sha256: b140377c6050a4d3979ff189d3ae2669e411d53dee8f5297a31e98dd9faec87f

Contents?: true

Size: 1.5 KB

Versions: 32

Compression:

Stored size: 1.5 KB

Contents

require 'uri'

module Rhoconnect
  class RhoconnectPush
  	class InvalidPushServer < Exception; end
    class InvalidPushRequest < Exception; end

    def self.ping(params)
      begin
    		settings = get_config(Rhoconnect.base_directory)[Rhoconnect.environment]
        if settings and settings[:push_server]
    			server = URI.join(settings[:push_server], "/messageQueue/#{params['device_pin']}")
		      RestClient.post(
            server.to_s,self.push_message(params),:content_type => :json
          ) do |response, request, result, &block|
            case response.code
            when 200, 204
              response.return!(request, result, &block)
            when 400
              raise InvalidPushRequest.new("Invalid push request.")
            end
          end
		    else
		    	raise InvalidPushServer.new("Missing or invalid `:push_server` in settings/settings.yml.")
        end
	    rescue Exception => error
        log "RhoConnect Push Error: #{error}"
        log error.backtrace.join("\n")
        raise error
      end
    end

    # Generates push package
  	def self.push_message(params)
			data											= {}
			data['collapseId']				= params['badge'].to_i if params['badge']
			data['data']							= {}
			data['data']['alert'] 	  = params['message'] if params['message'] 
			data['data']['sound'] 		= params['sound'] if params['sound']
			data['data']['vibrate']		= params['vibrate'] if params['vibrate']
			data['data']['do_sync'] 	= params['sources'] if params['sources']
			data.to_json
  	end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
rhoconnect-7.6.0 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-7.5.1 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-7.4.1 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-7.1.17 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-6.2.0 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-6.0.11 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-5.5.18 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-5.5.17 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-5.5.15 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-5.5.0.22 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-5.5.2 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-5.5.0.7 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-5.5.0.3 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-5.5.0 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-5.1.1 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-4.0.4 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-4.0.3 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-4.0.2 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-4.0.1 lib/rhoconnect/ping/rhoconnect_push.rb
rhoconnect-4.0.0 lib/rhoconnect/ping/rhoconnect_push.rb