Sha256: aa0203bd4d17121b2d75b1f4b3d478279761988db3a3d0fc72842e4ec1a7d43e

Contents?: true

Size: 1.83 KB

Versions: 18

Compression:

Stored size: 1.83 KB

Contents

require 'cms_scanner/browser/actions'
require 'cms_scanner/browser/options'

module CMSScanner
  # Singleton used to perform HTTP/HTTPS request to the target
  class Browser
    extend Actions

    # @param [ Hash ] parsed_options
    #
    # @return [ Void ]
    def initialize(parsed_options = {})
      load_options(parsed_options)
    end

    private_class_method :new

    # @param [ Hash ] parsed_options
    #
    # @return [ Browser ] The instance
    def self.instance(parsed_options = {})
      @@instance ||= new(parsed_options)
    end

    def self.reset
      @@instance = nil
    end

    # @param [ String ] url
    # @param [ Hash ] params
    #
    # @return [ Typhoeus::Request ]
    def forge_request(url, params = {})
      Typhoeus::Request.new(url, request_params(params))
    end

    # @return [ Hash ]
    def default_request_params
      params = {
        ssl_verifypeer: false, # Disable SSL-Certificate checks
        ssl_verifyhost: 2, # Disable SSL-Certificate checks
        headers: { 'User-Agent' => user_agent }
      }

      { connecttimeout: :connect_timeout, cache_ttl: :cache_ttl,
        proxy: :proxy, timeout: :request_timeout, cookiejar: :cookie_jar,
        cookiefile: :cookie_jar, cookie: :cookie_string
      }.each do |typhoeus_opt, browser_opt|
        attr_value = public_send(browser_opt)
        params[typhoeus_opt] = attr_value unless attr_value.nil?
      end

      params[:proxyauth] = "#{proxy_auth[:username]}:#{proxy_auth[:password]}" if proxy_auth
      params[:userpwd] = "#{http_auth[:username]}:#{http_auth[:password]}" if http_auth

      params
    end

    # @param [ Hash ] params
    #
    # @return [ Hash ]
    def request_params(params = {})
      default_request_params.merge(params) do |key, oldval, newval|
        key == :headers ? oldval.merge(newval) : newval
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
cms_scanner-0.0.19 lib/cms_scanner/browser.rb
cms_scanner-0.0.18 lib/cms_scanner/browser.rb
cms_scanner-0.0.17 lib/cms_scanner/browser.rb
cms_scanner-0.0.16 lib/cms_scanner/browser.rb
cms_scanner-0.0.15 lib/cms_scanner/browser.rb
cms_scanner-0.0.14 lib/cms_scanner/browser.rb
cms_scanner-0.0.13 lib/cms_scanner/browser.rb
cms_scanner-0.0.12 lib/cms_scanner/browser.rb
cms_scanner-0.0.11 lib/cms_scanner/browser.rb
cms_scanner-0.0.10 lib/cms_scanner/browser.rb
cms_scanner-0.0.9 lib/cms_scanner/browser.rb
cms_scanner-0.0.8 lib/cms_scanner/browser.rb
cms_scanner-0.0.7 lib/cms_scanner/browser.rb
cms_scanner-0.0.6 lib/cms_scanner/browser.rb
cms_scanner-0.0.5 lib/cms_scanner/browser.rb
cms_scanner-0.0.4 lib/cms_scanner/browser.rb
cms_scanner-0.0.3 lib/cms_scanner/browser.rb
cms_scanner-0.0.2 lib/cms_scanner/browser.rb