Parent

Files

HTTPClient::SSLSocketWrap

Wraps up OpenSSL::SSL::SSLSocket and offers debugging features.

Public Class Methods

new(socket, context, debug_dev = nil) click to toggle source
     # File lib/httpclient/session.rb, line 236
236:     def initialize(socket, context, debug_dev = nil)
237:       unless SSLEnabled
238:         raise ConfigurationError.new('Ruby/OpenSSL module is required')
239:       end
240:       @context = context
241:       @socket = socket
242:       @ssl_socket = create_openssl_socket(@socket)
243:       @debug_dev = debug_dev
244:     end

Public Instance Methods

<<(str) click to toggle source
     # File lib/httpclient/session.rb, line 301
301:     def <<(str)
302:       rv = @ssl_socket.write(str)
303:       debug(str)
304:       rv
305:     end
close() click to toggle source
     # File lib/httpclient/session.rb, line 270
270:     def close
271:       @ssl_socket.close
272:       @socket.close
273:     end
closed?() click to toggle source
     # File lib/httpclient/session.rb, line 275
275:     def closed?
276:       @socket.closed?
277:     end
eof?() click to toggle source
     # File lib/httpclient/session.rb, line 279
279:     def eof?
280:       @ssl_socket.eof?
281:     end
flush() click to toggle source
     # File lib/httpclient/session.rb, line 307
307:     def flush
308:       @ssl_socket.flush
309:     end
gets(*args) click to toggle source
     # File lib/httpclient/session.rb, line 283
283:     def gets(*args)
284:       str = @ssl_socket.gets(*args)
285:       debug(str)
286:       str
287:     end
peer_cert() click to toggle source
     # File lib/httpclient/session.rb, line 266
266:     def peer_cert
267:       @ssl_socket.peer_cert
268:     end
post_connection_check(host) click to toggle source
     # File lib/httpclient/session.rb, line 250
250:     def post_connection_check(host)
251:       verify_mode = @context.verify_mode || OpenSSL::SSL::VERIFY_NONE
252:       if verify_mode == OpenSSL::SSL::VERIFY_NONE
253:         return
254:       elsif @ssl_socket.peer_cert.nil? and
255:         check_mask(verify_mode, OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT)
256:         raise OpenSSL::SSL::SSLError.new('no peer cert')
257:       end
258:       hostname = host.host
259:       if @ssl_socket.respond_to?(:post_connection_check) and RUBY_VERSION > "1.8.4"
260:         @ssl_socket.post_connection_check(hostname)
261:       else
262:         @context.post_connection_check(@ssl_socket.peer_cert, hostname)
263:       end
264:     end
read(*args) click to toggle source
     # File lib/httpclient/session.rb, line 289
289:     def read(*args)
290:       str = @ssl_socket.read(*args)
291:       debug(str)
292:       str
293:     end
readpartial(*args) click to toggle source
     # File lib/httpclient/session.rb, line 295
295:     def readpartial(*args)
296:       str = @ssl_socket.readpartial(*args)
297:       debug(str)
298:       str
299:     end
ssl_connect() click to toggle source
     # File lib/httpclient/session.rb, line 246
246:     def ssl_connect
247:       @ssl_socket.connect
248:     end
sync() click to toggle source
     # File lib/httpclient/session.rb, line 311
311:     def sync
312:       @ssl_socket.sync
313:     end
sync=(sync) click to toggle source
     # File lib/httpclient/session.rb, line 315
315:     def sync=(sync)
316:       @ssl_socket.sync = sync
317:     end

Private Instance Methods

check_mask(value, mask) click to toggle source
     # File lib/httpclient/session.rb, line 321
321:     def check_mask(value, mask)
322:       value & mask == mask
323:     end
create_openssl_socket(socket) click to toggle source
     # File lib/httpclient/session.rb, line 325
325:     def create_openssl_socket(socket)
326:       ssl_socket = nil
327:       if OpenSSL::SSL.const_defined?("SSLContext")
328:         ctx = OpenSSL::SSL::SSLContext.new
329:         @context.set_context(ctx)
330:         ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ctx)
331:       else
332:         ssl_socket = OpenSSL::SSL::SSLSocket.new(socket)
333:         @context.set_context(ssl_socket)
334:       end
335:       ssl_socket
336:     end
debug(str) click to toggle source
     # File lib/httpclient/session.rb, line 338
338:     def debug(str)
339:       @debug_dev << str if @debug_dev && str
340:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.