class Govuk::Diff::Pages::PageSearcher

Public Class Methods

new(config, formats) click to toggle source
# File lib/govuk/diff/pages/page_searcher.rb, line 8
def initialize(config, formats)
  @config = config
  @formats = formats
  @pages = []
  @url_checker = UrlChecker.new(@config)
end

Public Instance Methods

run() click to toggle source
# File lib/govuk/diff/pages/page_searcher.rb, line 15
def run
  @formats.each do |format|
    puts "Getting top #{@config.page_indexer.max_pages_per_format} for format #{format}" if verbose?
    @pages << top_pages_for_format(format)
  end
  @pages.flatten!
end
verbose?() click to toggle source
# File lib/govuk/diff/pages/page_searcher.rb, line 23
def verbose?
  @config.verbose
end

Private Instance Methods

extract_top_govuk_pages(result_set) click to toggle source
# File lib/govuk/diff/pages/page_searcher.rb, line 34
def extract_top_govuk_pages(result_set)
  links = result_set.fetch('results').collect { |result| result['link'] }
  valid_links = links.select { |link| @url_checker.valid?(link) }
  valid_links.slice(0, @config.page_indexer.max_pages_per_format)
end
result_set_for_format(format) click to toggle source
# File lib/govuk/diff/pages/page_searcher.rb, line 40
def result_set_for_format(format)
  url = "#{@config.domains.production}/api/search.json?filter_format=#{format}"
  RestClient.get(url)
end
top_pages_for_format(format) click to toggle source
# File lib/govuk/diff/pages/page_searcher.rb, line 29
def top_pages_for_format(format)
  result_set = JSON.parse(result_set_for_format(format))
  extract_top_govuk_pages(result_set)
end