Sha256: 3116d9c46a9cced88dc4ea6d9c35a084126aff0f2586cd76d3c81976c1aa12b5

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

class Mechanize
  class Chain
    class SSLResolver
      include Mechanize::Handler

      def initialize(ca_file, verify_callback, cert, key, pass)
        @ca_file = ca_file
        @verify_callback = verify_callback
        @cert = cert
        @key = key
        @pass = pass
      end

      def handle(ctx, params)
        uri       = params[:uri]
        http_obj  = params[:connection]

        ssl = nil
        if http_obj.instance_variable_defined?(:@ssl_context)
          http_obj.instance_variable_get(:@ssl_context)
        end

        if uri.scheme == 'https' && ! http_obj.started? && ! ssl.frozen?
          http_obj.use_ssl = true
          http_obj.verify_mode = OpenSSL::SSL::VERIFY_NONE
          if @ca_file
            http_obj.ca_file = @ca_file
            http_obj.verify_mode = OpenSSL::SSL::VERIFY_PEER
            http_obj.verify_callback = @verify_callback if @verify_callback
          end
          if @cert && @key
            http_obj.cert = OpenSSL::X509::Certificate.new(::File.read(@cert))
            http_obj.key  = OpenSSL::PKey::RSA.new(::File.read(@key), @pass)
          end
        end
        super
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kitamomonga-mechanize-0.9.3.20090724215219 lib/mechanize/chain/ssl_resolver.rb