Module: Hydra::RemoteIdentifier

Defined in:
lib/hydra/remote_identifier/version.rb,
lib/hydra/remote_identifier/exceptions.rb,
lib/hydra/remote_identifier/registration.rb,
lib/hydra/remote_identifier/configuration.rb,
lib/hydra/remote_identifier/remote_service.rb,
lib/hydra/remote_identifier/minting_coordinator.rb,
lib/hydra/remote_identifier/remote_services/doi.rb,
lib/hydra/remote_identifier/minter.rb,
lib/hydra/remote_identifier/mapper.rb,
lib/hydra/remote_identifier.rb

Defined Under Namespace

Modules: RemoteServices Classes: Configuration, InvalidServiceMapping, Mapper, Minter, MintingCoordinator, Registration, RemoteService

Constant Summary collapse

VERSION =
"0.3.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configuration {|config| ... } ⇒ Object

Used for configuring available RemoteService and any additional initialization requirements for those RemoteServices (i.e. credentials)

Examples:

Hydra::RemoteIdentifier.configure do |config|
  config.remote_service(:doi, doi_credentials) do |doi|
    doi.register(target_class) do |map|
      map.target :url
      map.creator :creator
      map.title :title
      map.publisher :publisher
      map.publicationyear :publicationyear
      map.set_identifier(:set_identifier=)
    end
  end
end

Yield Parameters:



28
29
30
# File 'lib/hydra/remote_identifier.rb', line 28

def configuration
  @configuration
end

Class Method Details

.configure {|configuration| ... } ⇒ Object

Yields:



29
30
31
32
# File 'lib/hydra/remote_identifier.rb', line 29

def configure
  self.configuration ||= Configuration.new
  yield(configuration)
end

.mint(remote_service_name, target) ⇒ Object

Using the RemoteService mint the corresponding remote identifier for the target. You must first configure the RemoteService and target’s class to define the attribute map. See Hydra::RemoteIdentifier.configure

Examples:

Hydra::RemoteIdentifier.mint(:doi, book)

Parameters:

  • remote_service_name (#to_s)
  • target (#registered_remote_identifier_minters)


67
68
69
70
71
72
73
# File 'lib/hydra/remote_identifier.rb', line 67

def mint(remote_service_name, target)
  # @TODO - there is a better way to do this but this is "complete/correct"
  remote_service = configuration.find_remote_service(remote_service_name)
  target.registered_remote_identifier_minters.each do |minter|
    minter.call(target) if minter.remote_service == remote_service
  end
end

.mint_if_applicable(remote_service_name, target) ⇒ Object



48
49
50
51
52
53
54
55
# File 'lib/hydra/remote_identifier.rb', line 48

def mint_if_applicable(remote_service_name, target)
  remote_service = configuration.find_remote_service(remote_service_name)
  if target.public_send(remote_service.accessor_name).to_i != 0
    target.registered_remote_identifier_minters.each do |minter|
      minter.call(target) if minter.remote_service == remote_service
    end
  end
end

.with_registered_remote_service(remote_service_name, target) ⇒ Object

Examples:

Hydra::RemoteIdentifier.with_registered_remote_service(:doi, book) do |remote_service|
  Hydra::RemoteIdentifier.mint(:doi, book)
end


38
39
40
41
42
43
44
45
46
# File 'lib/hydra/remote_identifier.rb', line 38

def with_registered_remote_service(remote_service_name, target)
  # @TODO - the registered remote identifier is more than a bit off;
  # but it continues to work
  target.registered_remote_identifier_minters.each {|minter|
    if minter.remote_service.name.to_s == remote_service_name.to_s
      yield(minter.remote_service)
    end
  }
end