Class: Dor::MetadataService
- Inherits:
-
Object
- Object
- Dor::MetadataService
- Defined in:
- lib/dor/services/metadata_service.rb
Constant Summary collapse
- @@cache =
Cache.new(nil, nil, 250, 300)
Class Method Summary collapse
- .can_resolve?(identifier) ⇒ Boolean
- .fetch(identifier) ⇒ Object
- .handler_for(prefix) ⇒ Object
- .known_prefixes ⇒ Object
- .label_for(identifier) ⇒ Object
-
.resolvable(identifiers) ⇒ Object
TODO: Return a prioritized list.
Class Method Details
.can_resolve?(identifier) ⇒ Boolean
17 18 19 20 |
# File 'lib/dor/services/metadata_service.rb', line 17 def can_resolve?(identifier) (prefix, _identifier) = identifier.split(/:/, 2) handlers.key?(prefix.to_sym) end |
.fetch(identifier) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/dor/services/metadata_service.rb', line 27 def fetch(identifier) @@cache.fetch(identifier) do (prefix, identifier) = identifier.split(/:/, 2) handler = handler_for(prefix) handler.fetch(prefix, identifier) end end |
.handler_for(prefix) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/dor/services/metadata_service.rb', line 41 def handler_for(prefix) handler = handlers[prefix.to_sym] raise MetadataError, "Unknown metadata prefix: #{prefix}" if handler.nil? handler end |
.known_prefixes ⇒ Object
13 14 15 |
# File 'lib/dor/services/metadata_service.rb', line 13 def known_prefixes handlers.keys end |
.label_for(identifier) ⇒ Object
35 36 37 38 39 |
# File 'lib/dor/services/metadata_service.rb', line 35 def label_for(identifier) (prefix, identifier) = identifier.split(/:/, 2) handler = handler_for(prefix) handler.label(handler.fetch(prefix, identifier)) end |
.resolvable(identifiers) ⇒ Object
TODO: Return a prioritized list
23 24 25 |
# File 'lib/dor/services/metadata_service.rb', line 23 def resolvable(identifiers) identifiers.select { |identifier| can_resolve?(identifier) } end |