class Selenium::WebDriver::Remote::Http::Common
def call(verb, url, command_hash)
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-Type'] = "#{CONTENT_TYPE}; charset=utf-8" headers['Content-Length'] = payload.bytesize.to_s if [:post, :put].include?(verb) WebDriver.logger.info(" >>> #{url} | #{payload}") WebDriver.logger.debug(" > #{headers.inspect}") elsif verb == :post payload = '{}' headers['Content-Length'] = '2' end request verb, url, headers, payload end
def close
def close # hook for subclasses - will be called on Driver#quit end
def create_response(code, body, content_type)
def create_response(code, body, content_type) code = code.to_i body = body.to_s.strip content_type = content_type.to_s WebDriver.logger.info("<- #{body}") 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 = "unexpected response, code=#{code}, content-type=#{content_type.inspect}" msg << "\n#{body}" unless body.empty? raise Error::WebDriverError, msg end end
def initialize
def initialize @timeout = nil end
def quit_errors
def quit_errors [IOError] end
def request(*)
def request(*) raise NotImplementedError, 'subclass responsibility' end
def server_url
def server_url return @server_url if @server_url raise Error::WebDriverError, 'server_url not set' end