class BrowserCrawler::Reports::CsvReport

It involves methods which allow to save a store to a csv file

Public Class Methods

new(store:) click to toggle source
# File lib/browser_crawler/reports/csv_report.rb, line 7
def initialize(store:)
  @store = store
end

Public Instance Methods

export(save_folder_path:) click to toggle source
# File lib/browser_crawler/reports/csv_report.rb, line 11
def export(save_folder_path:)
  CSV.open("#{save_folder_path}/crawler_report.csv", 'wb') do |csv|
    csv << ['pages',
            'extracted links',
            'is external',
            'http status',
            'http code']

    @store.pages.each do |page, crawler_result|
      save_to_csv(csv, page, crawler_result)
    end
  end
end

Private Instance Methods

csv_header() click to toggle source
# File lib/browser_crawler/reports/csv_report.rb, line 56
def csv_header
  ['pages',
   'extracted links',
   'external?',
   'http status',
   'http code']
end
humanize_code(code) click to toggle source
# File lib/browser_crawler/reports/csv_report.rb, line 64
def humanize_code(code)
  case code.to_i
  when 200..225 then :active
  when 401 then :unauthorized
  when 301..308 then :redirect
  else
    :broken
  end
end
save_to_csv(csv, page, crawler_result) click to toggle source
# File lib/browser_crawler/reports/csv_report.rb, line 43
def save_to_csv(csv, page, crawler_result)
  extracted_links = filter_links(crawler_result[:extracted_links])

  if extracted_links.nil? || extracted_links.empty?
    csv << save_to_row(page, crawler_result)
    return
  end

  extracted_links.each do |link|
    csv << save_to_row(page, crawler_result, link)
  end
end
save_to_row(page, crawler_result, link = nil) click to toggle source
# File lib/browser_crawler/reports/csv_report.rb, line 35
def save_to_row(page, crawler_result, link = nil)
  [page,
   link,
   crawler_result[:external],
   humanize_code(crawler_result[:code]),
   crawler_result[:code]]
end