Class: Metamatter::Datacite

Inherits:
Object
  • Object
show all
Defined in:
lib/metamatter/datacite.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#repositoryObject

Returns the value of attribute repository.



6
7
8
# File 'lib/metamatter/datacite.rb', line 6

def repository
  @repository
end

Instance Method Details

#datacite_responseObject



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

#doiObject



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

#urlObject



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