class BrowserCrawler::EngineUtilities::InspectPageProcess

Inspect a passed link and update the loop queue if it is necessary.

Attributes

logger[R]
page_inspector[R]
screenshot_operator[R]

Public Class Methods

new(link_inspector:, capybara_session:, report_store:, screenshot_operator: nil, logger:) click to toggle source
# File lib/browser_crawler/engine_utilities/inspect_page_process.rb, line 15
def initialize(link_inspector:,
               capybara_session:,
               report_store:,
               screenshot_operator: nil,
               logger:)
  @page_inspector = PageInspector.new(
    link_inspector: link_inspector,
    capybara_session: capybara_session,
    report_store: report_store
  )
  @link_inspector = link_inspector
  @screenshot_operator = screenshot_operator
  @logger = logger
end

Public Instance Methods

call(unvisited_links_queue:) click to toggle source
# File lib/browser_crawler/engine_utilities/inspect_page_process.rb, line 30
def call(unvisited_links_queue:)
  visit_page
  update_queue(unvisited_links_queue: unvisited_links_queue)
end

Private Instance Methods

add_to_queue?(links:) click to toggle source
# File lib/browser_crawler/engine_utilities/inspect_page_process.rb, line 37
def add_to_queue?(links:)
  links && !links.empty?
end
update_queue(unvisited_links_queue:) click to toggle source
# File lib/browser_crawler/engine_utilities/inspect_page_process.rb, line 60
def update_queue(unvisited_links_queue:)
  unvisited_links = find_unvisited_links

  logger
    .info("#{unvisited_links.size} will add to unvisited links queue.")

  return unless add_to_queue?(links: unvisited_links)

  unvisited_links_queue.push(*unvisited_links).uniq!

  logger.info("#{unvisited_links_queue.size} - current state the queue.")
end
visit_page() click to toggle source
# File lib/browser_crawler/engine_utilities/inspect_page_process.rb, line 49
def visit_page
  logger.info("Visiting #{link_inspector.raw_link}")

  @page_inspector.visit_page

  @page_inspector.save_to_report(screenshot_operator: screenshot_operator)

  logger
    .info("#{@page_inspector.scan_result.size} links found on the page.")
end