Sha256: e5034b960f392f655d3f36420cfeb7c367b98901056d1331bc193a42610e9283

Contents?: true

Size: 1.6 KB

Versions: 2

Compression:

Stored size: 1.6 KB

Contents

require "net/http"

module Selenium
  module WebDriver
    module Remote
      module Http
        # @private
        class Default < Common

          private

          def http
            # ignoring SSL for now
            @http ||= (
              http = Net::HTTP.new @server_url.host, @server_url.port

              if self.class.timeout
                http.connect_timeout = self.class.timeout
                http.read_timeout    = self.class.timeout
              end

              http
            )
          end

          def request(verb, url, headers, payload, redirects = 0)
            request = new_request_for(verb, url, headers)

            retried = false
            begin
              response = http.request(request, payload)
            rescue Errno::ECONNABORTED, Errno::ECONNRESET
              # this happens sometimes on windows?!
              raise if retried

              request = new_request_for(verb, url, headers)
              retried = true

              retry
            end

            if response.kind_of? Net::HTTPRedirection
              raise Error::WebDriverError, "too many redirects" if redirects >= MAX_REDIRECTS
              request(:get, URI.parse(response['Location']), DEFAULT_HEADERS.dup, nil, redirects + 1)
            else
              create_response response.code, response.body, response.content_type
            end
          end

          def new_request_for(verb, url, headers)
            Net::HTTP.const_get(verb.to_s.capitalize).new(url.path, headers)
          end

        end # Default
      end # Http
    end # Remote
  end # WebDriver
end # Selenium

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
selenium-webdriver-0.0.24 remote/client/src/rb/lib/selenium/webdriver/remote/http/default.rb
selenium-webdriver-0.0.23 remote/client/src/rb/lib/selenium/webdriver/remote/http/default.rb