Class: Kimurai::BrowserBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/kimurai/browser_builder.rb,
lib/kimurai/browser_builder/mechanize_builder.rb,
lib/kimurai/browser_builder/selenium_chrome_builder.rb,
lib/kimurai/browser_builder/selenium_firefox_builder.rb,
lib/kimurai/browser_builder/poltergeist_phantomjs_builder.rb

Defined Under Namespace

Classes: MechanizeBuilder, PoltergeistPhantomJSBuilder, SeleniumChromeBuilder, SeleniumFirefoxBuilder

Constant Summary collapse

AVAILABLE_ENGINES =
[
  :mechanize,
  :mechanize_standalone,
  :poltergeist_phantomjs,
  :selenium_firefox,
  :selenium_chrome
]

Class Method Summary collapse

Class Method Details

.build(engine, config = {}, spider:) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/kimurai/browser_builder.rb', line 11

def self.build(engine, config = {}, spider:)
  unless AVAILABLE_ENGINES.include? engine
    raise "BrowserBuilder: wrong name of engine, available engines: #{AVAILABLE_ENGINES.join(', ')}"
  end

  if config[:browser].present?
    raise "++++++ BrowserBuilder: browser option is depricated. Now all sub-options inside " \
      "`browser` should be placed right into `@config` hash, without `browser` parent key.\n" \
      "See more here: https://github.com/vifreefly/kimuraframework/blob/master/CHANGELOG.md#breaking-changes-110 ++++++"
  end

  case engine
  when :mechanize
    require_relative 'browser_builder/mechanize_builder'
    MechanizeBuilder.new(config, spider: spider).build
  when :selenium_chrome
    require_relative 'browser_builder/selenium_chrome_builder'
    SeleniumChromeBuilder.new(config, spider: spider).build
  when :poltergeist_phantomjs
    require_relative 'browser_builder/poltergeist_phantomjs_builder'
    PoltergeistPhantomJSBuilder.new(config, spider: spider).build
  when :selenium_firefox
    require_relative 'browser_builder/selenium_firefox_builder'
    SeleniumFirefoxBuilder.new(config, spider: spider).build
  end
end