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