Sha256: 45272bcbf41272531b02a093ac579d37d928f3aa71d77c49738761d09413d247

Contents?: true

Size: 1.56 KB

Versions: 20

Compression:

Stored size: 1.56 KB

Contents

# frozen_string_literal: true
require 'proxy_rb/drivers/basic_driver'
require 'proxy_rb/errors'

begin
  require 'capybara/webkit'
rescue LoadError => e
  ProxyRb.logger.error %(Error loading `capybara-webkit`-gem: #{e.message}. Please add `gem capybara-webkit` to your `Gemfile`)
  exit 1
end

# rubocop:disable Style/SymbolProc
::Capybara::Webkit.configure do |config|
  config.allow_unknown_urls
end
# rubocop:enable Style/SymbolProc

# ProxyRb
module ProxyRb
  # Drivers
  module Drivers
    # Driver for Capybara-Webkit
    class WebkitDriver < BasicDriver
      # Register proxy
      #
      # @param [HttpProxy] proxy
      #   The HTTP proxy which should be used for fetching content
      def register(proxy)
        if proxy.empty?
          ::Capybara.current_driver = :webkit
          return
        end

        options = {
          proxy: {
            host: proxy.host,
            port: proxy.port,
            user: proxy.user,
            pass: proxy.password
          }
        }

        unless ::Capybara.drivers.key? proxy.to_ref
          ::Capybara.register_driver proxy.to_ref do |app|
            ::Capybara::Webkit::Driver.new(app, Capybara::Webkit::Configuration.to_hash.merge(options))
          end
        end

        ::Capybara.current_driver = proxy.to_ref
      end

      def timeout_errors
        [::Capybara::Webkit::TimeoutError]
      end

      def failure_errors
        [
          Capybara::Webkit::InvalidResponseError,
          Capybara::Webkit::NoResponseError,
          Capybara::Webkit::ConnectionError
        ]
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
proxy_rb-1.0.0 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.10.6 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.10.5 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.10.4 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.10.3 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.10.2 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.10.1 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.10.0 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.9.3 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.9.2 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.9.1 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.9.0 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.8.3 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.8.2 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.8.1 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.8.0 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.7.1 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.7.0 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.6.0 lib/proxy_rb/drivers/webkit_driver.rb
proxy_rb-0.5.0 lib/proxy_rb/drivers/webkit_driver.rb