Class: Relaton::Calconnect::DataFetcher

Inherits:
Relaton::Core::DataFetcher
  • Object
show all
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

Instance Method Details

#etagfileObject

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

#indexObject



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