Class: Selenium::WebDriver::Remote::Http::Common
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
|
|
Inherits: | Object |
Defined in: | rb/lib/selenium/webdriver/remote/http/common.rb |
Constant Summary
-
CONTENT_TYPE =
# File 'rb/lib/selenium/webdriver/remote/http/common.rb', line 26'application/json'
-
DEFAULT_HEADERS =
# File 'rb/lib/selenium/webdriver/remote/http/common.rb', line 27{ 'Accept' => CONTENT_TYPE, 'Content-Type' => "#{CONTENT_TYPE}; charset=UTF-8", 'User-Agent' => "selenium/#{WebDriver::VERSION} (ruby #{Platform.os})" }.freeze
-
MAX_REDIRECTS =
same as chromium/gecko
20
Instance Attribute Summary
- #server_url=(value) rw
- #server_url rw private
Instance Method Summary
Instance Attribute Details
#server_url (rw, private)
[ GitHub ]# File 'rb/lib/selenium/webdriver/remote/http/common.rb', line 64
def server_url return @server_url if @server_url raise Error::WebDriverError, 'server_url not set' end
#server_url=(value) (rw)
[ GitHub ]# File 'rb/lib/selenium/webdriver/remote/http/common.rb', line 33
attr_writer :server_url
Instance Method Details
#call(verb, url, command_hash)
[ GitHub ]# File 'rb/lib/selenium/webdriver/remote/http/common.rb', line 43
def call(verb, url, command_hash) url = server_url.merge(url) unless url.is_a?(URI) headers = DEFAULT_HEADERS.dup headers['Cache-Control'] = 'no-cache' if verb == :get if command_hash payload = JSON.generate(command_hash) headers['Content-Length'] = payload.bytesize.to_s if %i[post put].include?(verb) WebDriver.logger.debug(" >>> #{url} | #{payload}", id: :command) WebDriver.logger.debug(" > #{headers.inspect}", id: :header) elsif verb == :post payload = '{}' headers['Content-Length'] = '2' end request verb, url, headers, payload end
#close
[ GitHub ]# File 'rb/lib/selenium/webdriver/remote/http/common.rb', line 39
def close # hook for subclasses - will be called on Driver#quit end
#create_response(code, body, content_type) (private)
[ GitHub ]# File 'rb/lib/selenium/webdriver/remote/http/common.rb', line 74
def create_response(code, body, content_type) code = code.to_i body = body.to_s.strip content_type = content_type.to_s WebDriver.logger.debug("<- #{body}", id: :command) if content_type.include? CONTENT_TYPE raise Error::WebDriverError, "empty body: #{content_type.inspect} (#{code})\n#{body}" if body.empty? Response.new(code, JSON.parse(body)) elsif code == 204 Response.new(code) else msg = if body.empty? "unexpected response, code=#{code}, content-type=#{content_type.inspect}" else "unexpected response, code=#{code}, content-type=#{content_type.inspect}\n#{body}" end raise Error::WebDriverError, msg end end
#quit_errors
[ GitHub ]# File 'rb/lib/selenium/webdriver/remote/http/common.rb', line 35
def quit_errors [IOError] end
#request (private)
# File 'rb/lib/selenium/webdriver/remote/http/common.rb', line 70
def request(*) raise NotImplementedError, 'subclass responsibility' end