class BrowserCrawler::EngineUtilities::PageInspector

Attributes

capybara_session[RW]
report_store[RW]
scan_result[RW]

Public Class Methods

new(link_inspector:, capybara_session:, report_store:) click to toggle source
# File lib/browser_crawler/engine_utilities/page_inspector.rb, line 17
def initialize(link_inspector:, capybara_session:, report_store:)
  @link_inspector = link_inspector
  @capybara_session = capybara_session
  @report_store = report_store
  @scan_result = []
  @link_scanner = LinkScanner.new(link_inspector: link_inspector)
end

Public Instance Methods

before_page_scan() click to toggle source
# File lib/browser_crawler/engine_utilities/page_inspector.rb, line 48
def before_page_scan; end
save_to_report(screenshot_operator: nil) click to toggle source
# File lib/browser_crawler/engine_utilities/page_inspector.rb, line 36
def save_to_report(screenshot_operator: nil)
  screenshot_path = save_screenshot(screenshot_operator)

  report_store.record_page_visit(
    page: link_inspector.full_url,
    extracted_links: scan_result,
    screenshot_filename: screenshot_path,
    external: link_inspector.external_url?,
    code: capybara_session.status_code
  )
end
visit_page() click to toggle source
# File lib/browser_crawler/engine_utilities/page_inspector.rb, line 25
def visit_page
  uri = link_inspector.uri
  Capybara.app_host = "#{uri.scheme}://#{uri.host}:#{uri.port}"

  visit link_inspector.full_url

  with_hooks_for(type: :each) do
    @scan_result = scanning
  end
end

Private Instance Methods

save_screenshot(screenshot_operator) click to toggle source
# File lib/browser_crawler/engine_utilities/page_inspector.rb, line 56
def save_screenshot(screenshot_operator)
  return unless screenshot_operator&.save_screenshots?

  capybara_session.save_screenshot(
    screenshot_operator.file_path(url: capybara_session.current_url)
  )
end
scanning() click to toggle source
# File lib/browser_crawler/engine_utilities/page_inspector.rb, line 52
def scanning
  link_scanner.scan(page: capybara_session) || []
end