Sha256: c8578a6b2d40e7b950c3bd389cccd97f3f45792d1a2b2820ae74aa8e95e305c2
Contents?: true
Size: 1.26 KB
Versions: 1
Compression:
Stored size: 1.26 KB
Contents
require 'uri' require 'socket' require 'openssl' require 'forwardable' module Houston class Connection extend Forwardable def_delegators :@ssl, :read, :write def_delegators :@uri, :scheme, :host, :port attr_reader :ssl, :socket, :certificate, :passphrase class << self def open(uri, certificate, passphrase) return unless block_given? connection = new(uri, certificate, passphrase) connection.open yield connection connection.close end end def initialize(uri, certificate, passphrase) @uri = URI(uri) @certificate = certificate @passphrase = passphrase end 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 = true @ssl.connect end def open? not (@ssl && @socket).nil? end def close return false if closed? @ssl.close @ssl = nil @socket.close @socket = nil end def closed? not open? end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
houston-2.2.4 | ./lib/houston/connection.rb |