Class: Metamatter::Datacite
- Inherits:
-
Object
- Object
- Metamatter::Datacite
- Defined in:
- lib/metamatter/datacite.rb
Instance Attribute Summary collapse
-
#repository ⇒ Object
Returns the value of attribute repository.
Instance Method Summary collapse
- #datacite_response ⇒ Object
- #doi ⇒ Object
-
#initialize(repository) ⇒ Datacite
constructor
A new instance of Datacite.
- #log_dois(dois) ⇒ Object
- #url ⇒ Object
Constructor Details
#initialize(repository) ⇒ Datacite
Returns a new instance of Datacite.
8 9 10 |
# File 'lib/metamatter/datacite.rb', line 8 def initialize(repository) @repository = repository end |
Instance Attribute Details
#repository ⇒ Object
Returns the value of attribute repository.
6 7 8 |
# File 'lib/metamatter/datacite.rb', line 6 def repository @repository end |
Instance Method Details
#datacite_response ⇒ Object
29 30 31 32 33 34 35 36 |
# 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 ⇒ Object
12 13 14 15 16 17 18 19 20 21 |
# 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) ⇒ Object
23 24 25 26 27 |
# 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 ⇒ Object
38 39 40 |
# 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 |