11# frozen_string_literal: true
22
3+ require 'geo_combine/logger'
4+
35module GeoCombine
46 ##
57 # A class to harvest and index results from GeoBlacklight sites
@@ -45,24 +47,25 @@ def document_transformer
4547
4648 attr_reader :site , :site_key
4749
48- def initialize ( site_key )
50+ def initialize ( site_key , logger : GeoCombine :: Logger . logger )
4951 @site_key = site_key
5052 @site = self . class . config [ site_key ]
53+ @logger = logger
5154
5255 raise ArgumentError , "Site key #{ @site_key . inspect } is not configured for #{ self . class . name } " unless @site
5356 end
5457
5558 def index
56- puts "Fetching page 1 @ #{ base_url } &page=1" if self . class . config [ :debug ]
59+ @logger . debug "fetching page 1 @ #{ base_url } &page=1"
5760 response = JSON . parse ( Net ::HTTP . get ( URI ( "#{ base_url } &page=1" ) ) )
5861 response_class = BlacklightResponseVersionFactory . call ( response )
5962
60- response_class . new ( response : response , base_url : base_url ) . documents . each do |docs |
63+ response_class . new ( response :, base_url :, logger : @logger ) . documents . each do |docs |
6164 docs . map! do |document |
6265 self . class . document_transformer &.call ( document )
6366 end . compact
6467
65- puts "Adding #{ docs . count } documents to solr" if self . class . config [ :debug ]
68+ @logger . debug "adding #{ docs . count } documents to solr"
6669 solr_connection . update params : { commitWithin : commit_within , overwrite : true } ,
6770 data : docs . to_json ,
6871 headers : { 'Content-Type' => 'application/json' }
@@ -91,10 +94,11 @@ class LegacyBlacklightResponse
9194 attr_reader :base_url
9295 attr_accessor :response , :page
9396
94- def initialize ( response :, base_url :)
97+ def initialize ( response :, base_url :, logger : GeoCombine :: Logger . logger )
9598 @base_url = base_url
9699 @response = response
97100 @page = 1
101+ @logger = logger
98102 end
99103
100104 def documents
@@ -106,12 +110,12 @@ def documents
106110 break if current_page == total_pages
107111
108112 self . page += 1
109- puts "Fetching page #{ page } @ #{ url } " if GeoCombine :: GeoBlacklightHarvester . config [ :debug ]
113+ @logger . debug "fetching page #{ page } @ #{ url } "
110114
111115 begin
112116 self . response = JSON . parse ( Net ::HTTP . get ( URI ( url ) ) )
113117 rescue StandardError => e
114- puts "Request for #{ url } failed with #{ e } "
118+ @logger . error "request for #{ url } failed with #{ e } "
115119 self . response = nil
116120 end
117121 end
@@ -138,10 +142,11 @@ class ModernBlacklightResponse
138142 attr_reader :base_url
139143 attr_accessor :response , :page
140144
141- def initialize ( response :, base_url :)
145+ def initialize ( response :, base_url :, logger : GeoCombine :: Logger . logger )
142146 @base_url = base_url
143147 @response = response
144148 @page = 1
149+ @logger = logger
145150 end
146151
147152 def documents
@@ -157,11 +162,11 @@ def documents
157162
158163 url = "#{ url } &format=json"
159164 self . page += 1
160- puts "Fetching page #{ page } @ #{ url } " if GeoCombine :: GeoBlacklightHarvester . config [ :debug ]
165+ @logger . debug "fetching page #{ page } @ #{ url } "
161166 begin
162167 self . response = JSON . parse ( Net ::HTTP . get ( URI ( url ) ) )
163168 rescue StandardError => e
164- puts "Request for #{ url } failed with #{ e } "
169+ @logger . error "Request for #{ url } failed with #{ e } "
165170 self . response = nil
166171 end
167172 end
@@ -170,11 +175,11 @@ def documents
170175 private
171176
172177 def documents_from_urls ( urls )
173- puts "Fetching #{ urls . count } documents for page #{ page } " if GeoCombine :: GeoBlacklightHarvester . config [ :debug ]
178+ @logger . debug "fetching #{ urls . count } documents for page #{ page } "
174179 urls . map do |url |
175180 JSON . parse ( Net ::HTTP . get ( URI ( "#{ url } /raw" ) ) )
176181 rescue StandardError => e
177- puts "Fetching \" #{ url } /raw\" failed with #{ e } "
182+ @logger . error "fetching \" #{ url } /raw\" failed with #{ e } "
178183
179184 nil
180185 end . compact
0 commit comments