Class: Hyrax::DOI::DataCiteRegistrar

Inherits:
Identifier::Registrar
  • Object
show all
Defined in:
app/services/hyrax/doi/datacite_registrar.rb

Constant Summary collapse

STATES =
%w[draft registered findable].freeze

Instance Method Summary collapse

Constructor Details

#initialize(builder: Hyrax::Identifier::Builder.new(prefix: self.prefix)) ⇒ DataCiteRegistrar

Returns a new instance of DataCiteRegistrar.



10
11
12
# File 'app/services/hyrax/doi/datacite_registrar.rb', line 10

def initialize(builder: Hyrax::Identifier::Builder.new(prefix: self.prefix))
  super
end

Instance Method Details

#mint_draft_doiObject



34
35
36
# File 'app/services/hyrax/doi/datacite_registrar.rb', line 34

def mint_draft_doi
  client.create_draft_doi
end

#register!(object: work) ⇒ #identifier

Parameters:

  • object (#id) (defaults to: work)

Returns:

  • (#identifier)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/services/hyrax/doi/datacite_registrar.rb', line 18

def register!(object: work)
  doi = Array(object.try(:doi)).first

  # Return the existing DOI or nil if nothing needs to be done
  return Struct.new(:identifier).new(doi) unless register?(object)

  # Create a draft DOI (if necessary)
  doi ||= mint_draft_doi

  # Submit metadata, register url, and ensure proper status
  submit_to_datacite(object, doi)

  # Return the doi (old or new)
  Struct.new(:identifier).new(doi)
end