class GeoCombine::GeoBlacklightHarvester::LegacyBlacklightResponse

Attributes

base_url[R]
page[RW]
response[RW]

Public Class Methods

new(response:, base_url:) click to toggle source
# File lib/geo_combine/geo_blacklight_harvester.rb, line 88
def initialize(response:, base_url:)
  @base_url = base_url
  @response = response
  @page = 1
end

Public Instance Methods

documents() { |dig('response', 'docs')| ... } click to toggle source
# File lib/geo_combine/geo_blacklight_harvester.rb, line 94
def documents
  return enum_for(:documents) unless block_given?

  while current_page && total_pages && (current_page <= total_pages) do
    yield response.dig('response', 'docs')

    break if current_page == total_pages
    self.page += 1
    puts "Fetching page #{page} @ #{url}" if GeoCombine::GeoBlacklightHarvester.config[:debug]

    begin
      self.response = JSON.parse(Net::HTTP.get(URI(url)))
    rescue => e
      puts "Request for #{url} failed with #{e}"
      self.response = nil
    end
  end
end

Private Instance Methods

current_page() click to toggle source
# File lib/geo_combine/geo_blacklight_harvester.rb, line 119
def current_page
  response.dig('response', 'pages', 'current_page')
end
total_pages() click to toggle source
# File lib/geo_combine/geo_blacklight_harvester.rb, line 123
def total_pages
  response.dig('response', 'pages', 'total_pages')
end
url() click to toggle source
# File lib/geo_combine/geo_blacklight_harvester.rb, line 115
def url
  "#{base_url}&page=#{page}"
end