# frozen_string_literal
require "open-uri"
require "nokogiri"
class OpenAireRequest
API_URL = "https://api.openaire.eu/projects/dspace/%s/ALL/ALL"
attr_reader :funder_type
def initialize(funder_type)
@funder_type = funder_type
end
def get!
Rails.logger.info("Fetching fresh data from #{API_URL % funder_type}")
data = open(API_URL % funder_type)
Rails.logger.info("Fetched fresh data from #{API_URL % funder_type}")
@results = Nokogiri::XML(data).xpath("//pair/displayed-value").map do |node|
parts = node.content.split("-")
grant_id = parts.shift.to_s.strip
description = parts.join(" - ").strip
ResearchProject.new(grant_id, description)
end
return self
end
def results
Array(@results)
end
end