Class: Labimotion::ReserveTemplateDoi

Inherits:
Object
  • Object
show all
Includes:
TemplateDoiHelpers
Defined in:
lib/labimotion/usecases/reserve_template_doi.rb

Overview

Reserves a DataCite DOI for a LabIMotion template (ElementKlass / SegmentKlass / DatasetKlass). A DOI is published per major release (template X.0 -> DOI vX; later minor revisions X.y roll into v(X+1)); sub-1.0 and unversioned templates map to the first DOI (v1). The existing DOI is returned unless the latest one has been released AND the template has since moved to a version that maps to a new DOI version.

Constant Summary

Constants included from TemplateDoiHelpers

TemplateDoiHelpers::GENERIC_ADMIN_KEY, TemplateDoiHelpers::KLASS_BY_TYPE

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from TemplateDoiHelpers

authorized?, klass_type_for, new_version_available?, template_url

Constructor Details

#initialize(record, current_user) ⇒ ReserveTemplateDoi

Returns a new instance of ReserveTemplateDoi.



15
16
17
18
# File 'lib/labimotion/usecases/reserve_template_doi.rb', line 15

def initialize(record, current_user)
  @record = record
  @current_user = current_user
end

Instance Attribute Details

#current_userObject (readonly)

Returns the value of attribute current_user.



13
14
15
# File 'lib/labimotion/usecases/reserve_template_doi.rb', line 13

def current_user
  @current_user
end

#doiObject (readonly)

Returns the value of attribute doi.



13
14
15
# File 'lib/labimotion/usecases/reserve_template_doi.rb', line 13

def doi
  @doi
end

#errorObject (readonly)

Returns the value of attribute error.



13
14
15
# File 'lib/labimotion/usecases/reserve_template_doi.rb', line 13

def error
  @error
end

#recordObject (readonly)

Returns the value of attribute record.



13
14
15
# File 'lib/labimotion/usecases/reserve_template_doi.rb', line 13

def record
  @record
end

Instance Method Details

#callObject



20
21
22
23
24
25
26
# File 'lib/labimotion/usecases/reserve_template_doi.rb', line 20

def call
  return failure('record is required') if record.nil?
  return failure('unauthorized') unless TemplateDoiHelpers.authorized?(record, current_user)

  @doi = reserve
  self
end

#success?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/labimotion/usecases/reserve_template_doi.rb', line 28

def success?
  @error.nil? && @doi.present?
end