class Metamatter::Datacite
Attributes
repository[RW]
Public Class Methods
new(repository)
click to toggle source
# File lib/metamatter/datacite.rb, line 8 def initialize(repository) @repository = repository end
Public Instance Methods
datacite_response()
click to toggle source
# File lib/metamatter/datacite.rb, line 29 def datacite_response begin response = HTTParty.get(url).body return JSON.parse(response) rescue => e return {} end end
doi()
click to toggle source
# File lib/metamatter/datacite.rb, line 12 def doi docs = datacite_response["response"]["docs"] return nil if docs.empty? detected_dois = Array(docs).map do |doc| doi = doc.fetch("doi", nil) end.compact log_dois(detected_dois) if detected_dois.size > 1 return detected_dois end
log_dois(dois)
click to toggle source
# File lib/metamatter/datacite.rb, line 23 def log_dois(dois) puts "Warning: More than one DOI from Datacite search returned" puts "Search string: #{url}" dois.each { |doi| puts doi } end
url()
click to toggle source
# File lib/metamatter/datacite.rb, line 38 def url "http://search.datacite.org/api?q=relatedIdentifier:https://github.com/#{repository.name_with_owner}&fl=doi,creator,title,publisher,publicationYear,resourceTypeGeneral,datacentre,datacentre_symbol,prefix,relatedIdentifier&fq=is_active:true&fq=has_metadata:true&rows=1000&wt=json" end