class Weso::Base::SocketCreator
- ::nodoc
Constants
- DEFAULT_SSL_VERSION
Attributes
options[R]
uri[R]
Public Class Methods
new(url, options)
click to toggle source
# File lib/weso/socket_creator.rb, line 11 def initialize(url, options) @uri = URI.parse(url) @options = options end
Public Instance Methods
call()
click to toggle source
# File lib/weso/socket_creator.rb, line 16 def call socket = TCPSocket.new(uri.host, port) socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) socket = process_secure(socket) if secure? socket end
secure?()
click to toggle source
# File lib/weso/socket_creator.rb, line 23 def secure? %w[https wss].include? uri.scheme end
Private Instance Methods
context()
click to toggle source
# File lib/weso/socket_creator.rb, line 42 def context context = OpenSSL::SSL::SSLContext.new context.ssl_version = options[:ssl_version] || DEFAULT_SSL_VERSION context.verify_mode = options[:verify_mode] || OpenSSL::SSL::VERIFY_PEER context.cert_store = options[:cert_store] || default_cert_store context end
default_cert_store()
click to toggle source
# File lib/weso/socket_creator.rb, line 50 def default_cert_store cert_store = OpenSSL::X509::Store.new cert_store.set_default_paths cert_store end
port()
click to toggle source
# File lib/weso/socket_creator.rb, line 29 def port uri.port || (uri.scheme == 'wss' ? 443 : 80) end
process_secure(socket)
click to toggle source
# File lib/weso/socket_creator.rb, line 33 def process_secure(socket) ssl_context = options[:ssl_context] || context socket = ::OpenSSL::SSL::SSLSocket.new(socket, ssl_context) socket.hostname = uri.host socket.connect socket end