Class: Labimotion::ReserveTemplateDoi
- Inherits:
-
Object
- Object
- Labimotion::ReserveTemplateDoi
- 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
-
#current_user ⇒ Object
readonly
Returns the value of attribute current_user.
-
#doi ⇒ Object
readonly
Returns the value of attribute doi.
-
#error ⇒ Object
readonly
Returns the value of attribute error.
-
#record ⇒ Object
readonly
Returns the value of attribute record.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(record, current_user) ⇒ ReserveTemplateDoi
constructor
A new instance of ReserveTemplateDoi.
- #success? ⇒ Boolean
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_user ⇒ Object (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 |
#doi ⇒ Object (readonly)
Returns the value of attribute doi.
13 14 15 |
# File 'lib/labimotion/usecases/reserve_template_doi.rb', line 13 def doi @doi end |
#error ⇒ Object (readonly)
Returns the value of attribute error.
13 14 15 |
# File 'lib/labimotion/usecases/reserve_template_doi.rb', line 13 def error @error end |
#record ⇒ Object (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
#call ⇒ Object
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.(record, current_user) @doi = reserve self end |
#success? ⇒ Boolean
28 29 30 |
# File 'lib/labimotion/usecases/reserve_template_doi.rb', line 28 def success? @error.nil? && @doi.present? end |