class Grocer::SSLServer
Attributes
port[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/grocer/ssl_server.rb, line 10 def initialize(options = {}) options.extend Extensions::DeepSymbolizeKeys options = defaults.merge(options.deep_symbolize_keys) options.each { |k, v| send("#{k}=", v) } end
Public Instance Methods
accept() { |socket| ... }
click to toggle source
# File lib/grocer/ssl_server.rb, line 22 def accept while socket = ssl_socket.accept yield socket if block_given? end end
close()
click to toggle source
# File lib/grocer/ssl_server.rb, line 28 def close if @ssl_socket && !@ssl_socket.closed? begin @ssl_socket.shutdown rescue Errno::ENOTCONN # Some platforms raise this if the socket is not connected. Not sure # how to avoid it. end @ssl_socket.close end @ssl_socket = nil @socket = nil end
defaults()
click to toggle source
# File lib/grocer/ssl_server.rb, line 16 def defaults { port: 2195 } end
Private Instance Methods
context()
click to toggle source
# File lib/grocer/ssl_server.rb, line 54 def context @context ||= OpenSSL::SSL::SSLContext.new.tap do |c| c.cert = OpenSSL::X509::Certificate.new(File.read(crt_path)) c.key = OpenSSL::PKey::RSA.new(File.read(key_path)) end end
crt_path()
click to toggle source
# File lib/grocer/ssl_server.rb, line 61 def crt_path File.join(File.dirname(__FILE__), "test", "server.crt") end
key_path()
click to toggle source
# File lib/grocer/ssl_server.rb, line 65 def key_path File.join(File.dirname(__FILE__), "test", "server.key") end
socket()
click to toggle source
# File lib/grocer/ssl_server.rb, line 50 def socket @socket ||= TCPServer.new('127.0.0.1', port) end
ssl_socket()
click to toggle source
# File lib/grocer/ssl_server.rb, line 46 def ssl_socket @ssl_socket ||= OpenSSL::SSL::SSLServer.new(socket, context) end