class ApnsProviderApi::Connection
Attributes
certificate[R]
def_delegators :@stream, :headers, :data
http2client[R]
def_delegators :@stream, :headers, :data
passphrase[R]
def_delegators :@stream, :headers, :data
socket[R]
def_delegators :@stream, :headers, :data
ssl[R]
def_delegators :@stream, :headers, :data
Public Class Methods
new(uri, certificate, passphrase)
click to toggle source
# File lib/apns_provider_api/connection.rb, line 26 def initialize(uri, certificate, passphrase) @uri = URI(uri) @certificate = certificate @passphrase = passphrase @http2client = HTTP2::Client.new events @http2client end
open(uri, certificate, passphrase) { |connection| ... }
click to toggle source
# File lib/apns_provider_api/connection.rb, line 14 def open(uri, certificate, passphrase) return unless block_given? connection = new(uri, certificate, passphrase) connection.open yield connection connection.close end
Public Instance Methods
close()
click to toggle source
# File lib/apns_provider_api/connection.rb, line 53 def close return false if closed? @socket.close @socket = nil @ssl.close @ssl = nil end
closed?()
click to toggle source
# File lib/apns_provider_api/connection.rb, line 63 def closed? not open? end
events()
click to toggle source
# File lib/apns_provider_api/connection.rb, line 71 def events @http2client.on(:frame) do |bytes| # puts "Sending bytes: #{bytes.unpack("H*").first}" ssl.print bytes ssl.flush end end
new_stream()
click to toggle source
# File lib/apns_provider_api/connection.rb, line 67 def new_stream @http2client.new_stream end
open()
click to toggle source
# File lib/apns_provider_api/connection.rb, line 35 def open return false if open? @socket = TCPSocket.new(@uri.host, @uri.port) context = OpenSSL::SSL::SSLContext.new context.key = OpenSSL::PKey::RSA.new(@certificate, @passphrase) context.cert = OpenSSL::X509::Certificate.new(certificate) @ssl = OpenSSL::SSL::SSLSocket.new(@socket, context) @ssl.sync_close = true @ssl.hostname = @uri.hostname @ssl.connect end
open?()
click to toggle source
# File lib/apns_provider_api/connection.rb, line 49 def open? not (@ssl and @socket).nil? end