Sha256: 637512d308597f7b1daef36b97b0ae570913f4dbb33aca3c9452a7669d687d1f

Contents?: true

Size: 1.81 KB

Versions: 9

Compression:

Stored size: 1.81 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, ssl_verifyhost: 2, # Disable SSL-Certificate checks
        headers: { 'User-Agent' => user_agent },
        method: :get
      }

      { 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

9 entries across 9 versions & 1 rubygems

Version Path
cms_scanner-0.0.28 lib/cms_scanner/browser.rb
cms_scanner-0.0.27 lib/cms_scanner/browser.rb
cms_scanner-0.0.26 lib/cms_scanner/browser.rb
cms_scanner-0.0.25 lib/cms_scanner/browser.rb
cms_scanner-0.0.24 lib/cms_scanner/browser.rb
cms_scanner-0.0.23 lib/cms_scanner/browser.rb
cms_scanner-0.0.22 lib/cms_scanner/browser.rb
cms_scanner-0.0.21 lib/cms_scanner/browser.rb
cms_scanner-0.0.20 lib/cms_scanner/browser.rb