Class: Relaton::Calconnect::DataFetcher
- Inherits:
-
Relaton::Core::DataFetcher
- Object
- Relaton::Core::DataFetcher
- Relaton::Calconnect::DataFetcher
- Defined in:
- lib/relaton/calconnect/data_fetcher.rb
Overview
Relaton-calconnect data fetcher
Constant Summary collapse
- ENDPOINT =
DOMAIN = “standards.calconnect.org/” SCHEME, HOST = DOMAIN.split(%r:?/?/)
"https://standards.calconnect.org/relaton/index.yaml"
Instance Method Summary collapse
-
#etagfile ⇒ Object
DATADIR = “data” DATAFILE = File.join DATADIR, “bibliography.yml” ETAGFILE = File.join DATADIR, “etag.txt”.
-
#fetch(_source = nil) ⇒ Object
fetch data form server and save it to file.
- #index ⇒ Object
- #log_error(msg) ⇒ Object
Instance Method Details
#etagfile ⇒ Object
DATADIR = “data” DATAFILE = File.join DATADIR, “bibliography.yml” ETAGFILE = File.join DATADIR, “etag.txt”
22 23 24 |
# File 'lib/relaton/calconnect/data_fetcher.rb', line 22 def etagfile @etagfile ||= File.join @output, "etag.txt" end |
#fetch(_source = nil) ⇒ Object
fetch data form server and save it to file.
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/relaton/calconnect/data_fetcher.rb', line 37 def fetch(_source = nil) # rubocop:disable Metrics/AbcSize resp = Faraday.new(ENDPOINT, headers: { "If-None-Match" => etag }).get # return if there aren't any changes since last fetching return unless resp.status == 200 data = YAML.safe_load resp.body all_success = true data["root"]["items"].each { |doc| all_success &&= parse_page doc } self.etag = resp[:etag] if all_success index.save report_errors end |
#index ⇒ Object
26 27 28 |
# File 'lib/relaton/calconnect/data_fetcher.rb', line 26 def index @index = Relaton::Index.find_or_create :CC, file: "index-v1.yaml" end |
#log_error(msg) ⇒ Object
30 31 32 |
# File 'lib/relaton/calconnect/data_fetcher.rb', line 30 def log_error(msg) Util.error msg end |