Sha256: f9ee5285b0d0cf680429fccbecbd7f84426a82c15379f1b2e2bd54079c4a664a

Contents?: true

Size: 1.47 KB

Versions: 20

Compression:

Stored size: 1.47 KB

Contents

require 'socket'
require 'openssl'
module Rhosync
  class Iphone
    def self.ping(params)
      settings = get_config(Rhosync.base_directory)[Rhosync.environment]
      cert_file = File.join(Rhosync.base_directory,settings[:iphonecertfile])
      cert = File.read(cert_file) if File.exists?(cert_file)
    	passphrase = settings[:iphonepassphrase]
    	host = settings[:iphoneserver]
    	port = settings[:iphoneport] 
      begin
        ssl_ctx = OpenSSL::SSL::SSLContext.new
    		ssl_ctx.key = OpenSSL::PKey::RSA.new(cert, passphrase)
    		ssl_ctx.cert = OpenSSL::X509::Certificate.new(cert)

    		socket = TCPSocket.new(host, port)
    		ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ssl_ctx)
    		ssl_socket.sync = true
    		ssl_socket.connect

    		ssl_socket.write(apn_message(params))
    		ssl_socket.close
    		socket.close
  		rescue SocketError => error
  		  log "Error while sending ping: #{error}"
  		  raise error
  		end
    end

    # Generates APNS package
  	def self.apn_message(params)
  		data = {}
  		data['aps'] = {}
  		data['aps']['alert'] = params['message'] if params['message'] 
  		data['aps']['badge'] = params['badge'].to_i if params['badge']
  		data['aps']['sound'] = params['sound'] if params['sound']
  		data['aps']['vibrate'] = params['vibrate'] if params['vibrate']
  		data['do_sync'] = params['sources'] if params['sources']
  		json = data.to_json
  		"\0\0 #{[params['device_pin'].delete(' ')].pack('H*')}\0#{json.length.chr}#{json}"
  	end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
rhosync-2.0.5 lib/rhosync/ping/iphone.rb
rhosync-2.0.4 lib/rhosync/ping/iphone.rb
rhosync-2.0.3 lib/rhosync/ping/iphone.rb
rhosync-2.0.2 lib/rhosync/ping/iphone.rb
rhosync-2.0.1 lib/rhosync/ping/iphone.rb
rhosync-2.0.0 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.rc2 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.rc1 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta13 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta12 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta11 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta10 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta9 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta8 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta7 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta6 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta4 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta3 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta2 lib/rhosync/ping/iphone.rb
rhosync-2.0.0.beta1 lib/rhosync/ping/iphone.rb