Class: BrowserCrawler::Reports::Store

Inherits:
Object
  • Object
show all
Defined in:
lib/browser_crawler/reports/store.rb

Overview

It involves methods which allow to save data to a store structure

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pages: {}, metadata: {}, started_at: nil, finished_at: nil) ⇒ Store

Returns a new instance of Store.



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/browser_crawler/reports/store.rb', line 39

def initialize(pages: {},
               metadata: {},
               started_at: nil,
               finished_at: nil)
  @pages = pages
   = 
  @started_at = started_at
  @finished_at = finished_at
  @crawler_error = {}
  @unrecognized_links = []
end

Instance Attribute Details

#crawler_errorObject (readonly)

Returns the value of attribute crawler_error.



36
37
38
# File 'lib/browser_crawler/reports/store.rb', line 36

def crawler_error
  @crawler_error
end

#errorObject

Returns the value of attribute error.



37
38
39
# File 'lib/browser_crawler/reports/store.rb', line 37

def error
  @error
end

#metadataObject (readonly)

Returns the value of attribute metadata.



36
37
38
# File 'lib/browser_crawler/reports/store.rb', line 36

def 
  
end

#pagesObject (readonly)

Returns the value of attribute pages.



36
37
38
# File 'lib/browser_crawler/reports/store.rb', line 36

def pages
  @pages
end

Returns the value of attribute unrecognized_links.



36
37
38
# File 'lib/browser_crawler/reports/store.rb', line 36

def unrecognized_links
  @unrecognized_links
end

Instance Method Details

#finishObject



57
58
59
# File 'lib/browser_crawler/reports/store.rb', line 57

def finish
  @finished_at = Time.now
end

#record_crawler_error(link:, error:) ⇒ Object



94
95
96
97
98
99
# File 'lib/browser_crawler/reports/store.rb', line 94

def record_crawler_error(link:, error:)
  @crawler_error[link] = {
    message: error.message,
    backtrace: error.backtrace
  }
end

#record_page_visit(page:, extracted_links: nil, screenshot_filename: nil, error: nil, external: false, code: nil) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/browser_crawler/reports/store.rb', line 79

def record_page_visit(page:,
                      extracted_links: nil,
                      screenshot_filename: nil,
                      error: nil,
                      external: false,
                      code: nil)
  @pages[page] = {
    screenshot: screenshot_filename,
    error: error,
    extracted_links: extracted_links,
    code: code,
    external: external
  }
end


73
74
75
76
77
# File 'lib/browser_crawler/reports/store.rb', line 73

def record_unrecognized_link(link)
  return if @unrecognized_links.include?(link)

  @unrecognized_links << link unless @unrecognized_links.include?(link)
end

#start(url:) ⇒ Object



51
52
53
54
55
# File 'lib/browser_crawler/reports/store.rb', line 51

def start(url:)
  @pages.clear
  @started_at = Time.now
  [:url] = url
end

#to_hObject



61
62
63
64
65
66
67
68
69
70
71
# File 'lib/browser_crawler/reports/store.rb', line 61

def to_h
  {}.merge(pages: @pages)
    .merge()
    .merge(
      unrecognized_links: @unrecognized_links,
      crawler_error: @crawler_error,
      started_at: @started_at,
      finished_at: @finished_at,
      links_count: count_all_links
    )
end

#visited_pagesObject



101
102
103
# File 'lib/browser_crawler/reports/store.rb', line 101

def visited_pages
  @pages.keys
end