Class: GeoCombine::GeoBlacklightHarvester::LegacyBlacklightResponse

Inherits:
Object
  • Object
show all
Defined in:
lib/geo_combine/geo_blacklight_harvester.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(response:, base_url:, logger: GeoCombine::Logger.logger) ⇒ LegacyBlacklightResponse

Returns a new instance of LegacyBlacklightResponse.



97
98
99
100
101
102
# File 'lib/geo_combine/geo_blacklight_harvester.rb', line 97

def initialize(response:, base_url:, logger: GeoCombine::Logger.logger)
  @base_url = base_url
  @response = response
  @page = 1
  @logger = logger
end

Instance Attribute Details

#base_urlObject (readonly)

Returns the value of attribute base_url.



94
95
96
# File 'lib/geo_combine/geo_blacklight_harvester.rb', line 94

def base_url
  @base_url
end

#pageObject

Returns the value of attribute page.



95
96
97
# File 'lib/geo_combine/geo_blacklight_harvester.rb', line 95

def page
  @page
end

#responseObject

Returns the value of attribute response.



95
96
97
# File 'lib/geo_combine/geo_blacklight_harvester.rb', line 95

def response
  @response
end

Instance Method Details

#documentsObject



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/geo_combine/geo_blacklight_harvester.rb', line 104

def documents
  return enum_for(:documents) unless block_given?

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

    break if current_page == total_pages

    self.page += 1
    @logger.debug "fetching page #{page} @ #{url}"

    begin
      self.response = JSON.parse(Net::HTTP.get(URI(url)))
    rescue StandardError => e
      @logger.error "request for #{url} failed with #{e}"
      self.response = nil
    end
  end
end