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
filter_links(links)
click to toggle source
# File lib/browser_crawler/reports/csv_report.rb, line 27 def filter_links(links) return nil if links.nil? links.select do |link| link =~ /\A#{URI.regexp(%w[http https])}\z/ end 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