Sha256: 41c782c0c6de80325b9611225c60c08b04cc1f6e93f8f0fac7fa0277f472a84b
Contents?: true
Size: 1.31 KB
Versions: 2
Compression:
Stored size: 1.31 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.to_s @passphrase = passphrase.to_s unless passphrase.nil? 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
houston-2.4.0 | ./lib/houston/connection.rb |
houston-2.3.0 | ./lib/houston/connection.rb |