hydra-remote_identifier 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8dd002275201924c8933a9a7ea1f2fe473cce6a2
4
+ data.tar.gz: 310d16e3d0e2366617298b8ecb44da409ae31d09
5
+ SHA512:
6
+ metadata.gz: 0dc6ea4fc96e29934469d96b08eb4c3a2c8d0ca2fafde6f3d4af8152a167f9e4797573b769a54c503d8245919ca1c1a5466e032f78a8dc138f018041e6603472
7
+ data.tar.gz: 02d9d09d76c421039fb6f06bd1a56a2926eafac20f56adc35aba9b1ce2330ef677b940ed87050fe812db6e7d6b581f791b9128fe599f1375e739fd4b5cf55af4
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in hydra-remote_identifier.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,16 @@
1
+ ##########################################################################
2
+ #
3
+ # Copyright 2013 Notre Dame
4
+ # Additional copyright may be held by others, as reflected in the commit log
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Hydra::RemoteIdentifier
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'hydra-remote_identifier'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install hydra-remote_identifier
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'hydra/remote_identifier/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "hydra-remote_identifier"
8
+ spec.version = Hydra::RemoteIdentifier::VERSION
9
+ spec.authors = ["Jeremy Friesen"]
10
+ spec.email = ["jeremy.n.friesen@gmail.com"]
11
+ spec.description = %q{Handles the registration and minting of remote identifiers (i.e. DOI, ARK, ORCID)}
12
+ spec.summary = %q{Handles the registration and minting of remote identifiers (i.e. DOI, ARK, ORCID)}
13
+ spec.homepage = "https://github.com/jeremyf/hydra-remote_identifier"
14
+ spec.license = "APACHE2"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency 'activesupport', '>= 3.2.13', '< 5.0'
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency 'rspec'
26
+ end
@@ -0,0 +1,93 @@
1
+ module Hydra::RemoteIdentifier
2
+ class InvalidServiceMapping < RuntimeError
3
+ def initialize(errors)
4
+ super(errors.join(". ") << '.')
5
+ end
6
+ end
7
+ class Mapper
8
+
9
+ class Wrapper
10
+ attr_reader :map, :target
11
+ def initialize(map, target)
12
+ @map, @target = map, target
13
+ end
14
+
15
+ def extract_payload
16
+ map._getters.each_with_object({}) do |(key, getter), mem|
17
+ mem[key] = extract_attribute_for(target, getter, key)
18
+ mem
19
+ end
20
+ end
21
+
22
+ def set_identifier(identifier)
23
+ update_target(map._setter, target, identifier)
24
+ end
25
+
26
+ private
27
+
28
+ def update_target(setter, target, value)
29
+ if setter.respond_to?(:call)
30
+ setter.call(target, value)
31
+ elsif setter.is_a?(Symbol) || setter.is_a?(String)
32
+ target.send(setter, value)
33
+ elsif setter.is_a?(Hash)
34
+ datastream = setter.fetch(:at)
35
+ field = setter.fetch(:in, scheme)
36
+ target.datastreams["#{datastream}"].send("#{field}=", value)
37
+ end
38
+ end
39
+
40
+ def extract_attribute_for(target, getter, field_name)
41
+ if getter.respond_to?(:call)
42
+ getter.call(target)
43
+ elsif getter.is_a?(::Symbol) || getter.is_a?(::String)
44
+ target.send(getter)
45
+ elsif getter.is_a?(::Hash)
46
+ datastream = getter.fetch(:at)
47
+ field = getter.fetch(:in, field_name)
48
+ target.datastreams["#{datastream}"].send("#{field}")
49
+ end
50
+ end
51
+ end
52
+
53
+ class Map < BasicObject
54
+ attr_reader :service_class, :_getters, :_setter
55
+ def initialize(service_class, &config)
56
+ @service_class = service_class
57
+ @_setter = nil
58
+ @_getters = {}
59
+ @errors = []
60
+ config.call(self)
61
+ if @_setter.nil?
62
+ @errors << "Missing :set_identifier"
63
+ end
64
+ ::Kernel.raise ::Hydra::RemoteIdentifier::InvalidServiceMapping.new(@errors) if @errors.any?
65
+ end
66
+
67
+ def inspect
68
+ "#<Hydra::RemoteIdentifier::Mapper::Map for #{service_class} (#{__FILE__})>"
69
+ end
70
+
71
+ def method_missing(method_name, *args, &block)
72
+ if method_name == :set_identifier
73
+ @_setter = args.first || block
74
+ elsif service_class.valid_attribute?(method_name)
75
+ @_getters[method_name] = args.first || block
76
+ else
77
+ @errors << "Invalid mapping #{method_name}"
78
+ end
79
+ end
80
+ end
81
+
82
+ attr_reader :map
83
+ def initialize(service_class, map_builder = Map, &mapping_block)
84
+ @map = map_builder.new(service_class, &mapping_block)
85
+ end
86
+
87
+ def call(target, wrapper_builder = Wrapper)
88
+ wrapper_builder.new(map, target)
89
+ end
90
+
91
+ end
92
+
93
+ end
@@ -0,0 +1,31 @@
1
+ module Hydra::RemoteIdentifier
2
+
3
+ class Minter
4
+
5
+ def self.call(coordinator, target)
6
+ new(coordinator, target).call
7
+ end
8
+
9
+ attr_reader :service, :target
10
+
11
+ def initialize(service, target)
12
+ @service, @target = service, target
13
+ end
14
+
15
+ def call
16
+ update_target(service.call(payload))
17
+ end
18
+
19
+ private
20
+
21
+ def payload
22
+ target.extract_payload
23
+ end
24
+
25
+ def update_target(identifier)
26
+ target.set_identifier(identifier)
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,37 @@
1
+ module Hydra::RemoteIdentifier
2
+
3
+ class MintingCoordinator
4
+ attr_reader :service_class, :target_class, :mapper
5
+ def initialize(service_class, target_class, mapper_builder = Mapper, &map_config)
6
+ @service_class = service_class
7
+ @target_class = target_class
8
+ @mapper = mapper_builder.new(service_class, &map_config)
9
+ end
10
+
11
+ # Responsible for passing attributes from the target, as per the map, to
12
+ # the service and assigning the result of the service to the target, as per
13
+ # the map.
14
+ def call(target, minter = Minter)
15
+ minter.call(service_class.new, wrap(target))
16
+ end
17
+
18
+ private
19
+ def wrap(target)
20
+ mapper.call(target)
21
+ end
22
+ end
23
+
24
+ describe MintingCoordinator do
25
+ let(:service_class) { Class.new { def self.valid_attribute?(*); true; end } }
26
+ let(:target_class) { Class.new }
27
+ let(:mapper_builder) { double(new: double(call: :wrapped_target)) }
28
+ let(:target) { target_class.new }
29
+ let(:map) { lambda {|*|} }
30
+ subject { MintingCoordinator.new(service_class, target_class, mapper_builder, &map) }
31
+ it 'forward delegates call to the minter' do
32
+ minter = double
33
+ minter.should_receive(:call).with(kind_of(service_class), :wrapped_target)
34
+ subject.call(target, minter)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,44 @@
1
+ require 'active_support/core_ext/class/attribute'
2
+
3
+ module Hydra::RemoteIdentifier
4
+
5
+ class Registration
6
+ def initialize(service_class, target_class, minting_coordinator = MintingCoordinator, &map)
7
+ if map.nil?
8
+ raise RuntimeError, "You attempted to register the remote service #{service_class} for #{target_class} without a map"
9
+ end
10
+ target_class.class_attribute :registered_remote_identifier_minters unless target_class.respond_to?(:registered_remote_identifier_minters)
11
+ target_class.registered_remote_identifier_minters ||= []
12
+ target_class.registered_remote_identifier_minters += [minting_coordinator.new(service_class, target_class, &map)]
13
+ end
14
+ end
15
+
16
+ describe Registration do
17
+
18
+ let(:minting_coordinator) { double(new: :minting_coordinator) }
19
+ let(:remote_service) { RemoteService }
20
+ let(:target_class) { Class.new }
21
+ let(:map) { lambda {|m| m.title :title } }
22
+
23
+ it 'requires a map' do
24
+ expect { Registration.new(remote_service, target_class, minting_coordinator) }.to raise_error(RuntimeError)
25
+ end
26
+
27
+ it 'adds a .registered_remote_identifier_minters method' do
28
+ expect {
29
+ Registration.new(remote_service, target_class, minting_coordinator, &map)
30
+ }.to change{ target_class.respond_to?(:registered_remote_identifier_minters) }.from(false).to(true)
31
+ end
32
+
33
+ it 'adds a .registered_remote_identifier_minters method' do
34
+ Registration.new(remote_service, target_class, minting_coordinator, &map)
35
+ expect(target_class.registered_remote_identifier_minters).to eq [:minting_coordinator]
36
+ end
37
+
38
+ it 'should yield a map' do
39
+ Registration.new(remote_service, target_class, minting_coordinator, &map)
40
+ end
41
+
42
+ end
43
+
44
+ end
@@ -0,0 +1,16 @@
1
+ module Hydra::RemoteIdentifier
2
+
3
+ class RemoteService
4
+
5
+ def self.valid_attribute?(attribute_name)
6
+ true
7
+ end
8
+
9
+ def call(payload)
10
+ raise NotImplementedError,
11
+ "You must implement #{self.class}#call"
12
+ end
13
+
14
+ end
15
+
16
+ end
@@ -0,0 +1,5 @@
1
+ module Hydra
2
+ module RemoteIdentifier
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ require "hydra/remote_identifier/version"
2
+ require 'hydra/remote_identifier/registration'
3
+
4
+ module Hydra::RemoteIdentifier
5
+
6
+ def register(remote_service, target_class, &block)
7
+ Registration.new(remote_service, target_class, &block)
8
+ end
9
+ module_function :register
10
+
11
+ end
@@ -0,0 +1,51 @@
1
+ require File.expand_path('../../../../../lib/hydra/remote_identifier/mapper', __FILE__)
2
+ module Hydra::RemoteIdentifier
3
+ describe Mapper do
4
+
5
+ let(:service_class) { double }
6
+
7
+ describe 'with valid mapping block' do
8
+ before(:each) do
9
+ service_class.should_receive(:valid_attribute?).with(:title).and_return(true)
10
+ end
11
+ subject {
12
+ Mapper.new(service_class) { |map|
13
+ map.title :title
14
+ map.set_identifier :foo=
15
+ }
16
+ }
17
+ let(:my_title) { 'abc' }
18
+ let(:target) { double(title: my_title)}
19
+ let(:identifier) { '123' }
20
+
21
+ it { expect(subject.call(target)).to be_kind_of Mapper::Wrapper }
22
+
23
+ it { expect(subject.call(target).extract_payload).to eq({ title: my_title }) }
24
+ it {
25
+ target.should_receive(:foo=).with(identifier)
26
+ subject.call(target).set_identifier(identifier)
27
+ }
28
+ end
29
+
30
+ describe 'with invalid mapping block' do
31
+ it 'chokes on invalid attribute' do
32
+ service_class.should_receive(:valid_attribute?).with(:title).and_return(false)
33
+ expect {
34
+ Mapper.new(service_class) { |map|
35
+ map.title :title
36
+ map.set_identifier :foo=
37
+ }
38
+ }.to raise_error(InvalidServiceMapping)
39
+ end
40
+
41
+ it 'chokes when set_identifier is not specified' do
42
+ service_class.should_receive(:valid_attribute?).with(:title).and_return(true)
43
+ expect {
44
+ Mapper.new(service_class) { |map|
45
+ map.title :title
46
+ }
47
+ }.to raise_error(InvalidServiceMapping)
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,25 @@
1
+ require File.expand_path('../../../../../lib/hydra/remote_identifier/minter', __FILE__)
2
+
3
+ module Hydra::RemoteIdentifier
4
+
5
+ describe Minter do
6
+ let(:payload) { 'abc' }
7
+ let(:identifier) { '123' }
8
+ let(:target) { double(extract_payload: payload) }
9
+ let(:service) { double }
10
+ describe '.call' do
11
+ it 'initializes the minter and calls it' do
12
+
13
+ end
14
+ end
15
+ describe '#call' do
16
+ subject { Minter.new(service, target) }
17
+ it "extracts the target's payload to send to the remote service then updates the target's identifier" do
18
+ service.should_receive(:call).with(payload).and_return(identifier)
19
+ target.should_receive(:set_identifier).with(identifier)
20
+ subject.call
21
+ end
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,17 @@
1
+ require File.expand_path('../../../../../lib/hydra/remote_identifier/minting_coordinator', __FILE__)
2
+
3
+ module Hydra::RemoteIdentifier
4
+ describe MintingCoordinator do
5
+ let(:service_class) { Class.new { def self.valid_attribute?(*); true; end } }
6
+ let(:target_class) { Class.new }
7
+ let(:mapper_builder) { double(new: double(call: :wrapped_target)) }
8
+ let(:target) { target_class.new }
9
+ let(:map) { lambda {|*|} }
10
+ subject { MintingCoordinator.new(service_class, target_class, mapper_builder, &map) }
11
+ it 'forward delegates call to the minter' do
12
+ minter = double
13
+ minter.should_receive(:call).with(kind_of(service_class), :wrapped_target)
14
+ subject.call(target, minter)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,26 @@
1
+ require File.expand_path('../../../../../lib/hydra/remote_identifier/registration', __FILE__)
2
+ module Hydra::RemoteIdentifier
3
+
4
+ describe Registration do
5
+ let(:minting_coordinator) { double(new: :minting_coordinator) }
6
+ let(:remote_service) { RemoteService }
7
+ let(:target_class) { Class.new }
8
+ let(:map) { lambda {|m| m.title :title } }
9
+ it 'requires a map' do
10
+ expect { Registration.new(remote_service, target_class, minting_coordinator) }.to raise_error(RuntimeError)
11
+ end
12
+ it 'adds a .registered_remote_identifier_minters method' do
13
+ expect {
14
+ Registration.new(remote_service, target_class, minting_coordinator, &map)
15
+ }.to change{ target_class.respond_to?(:registered_remote_identifier_minters) }.from(false).to(true)
16
+ end
17
+ it 'adds a .registered_remote_identifier_minters method' do
18
+ Registration.new(remote_service, target_class, minting_coordinator, &map)
19
+ expect(target_class.registered_remote_identifier_minters).to eq [:minting_coordinator]
20
+ end
21
+
22
+ it 'should yield a map' do
23
+ Registration.new(remote_service, target_class, minting_coordinator, &map)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,13 @@
1
+ require File.expand_path('../../../../../lib/hydra/remote_identifier/remote_service', __FILE__)
2
+
3
+ module Hydra::RemoteIdentifier
4
+
5
+ describe RemoteService do
6
+ let(:payload) { 'abc' }
7
+ subject { RemoteService.new }
8
+
9
+ it { expect { subject.call(payload) }.to raise_error NotImplementedError }
10
+
11
+ end
12
+
13
+ end
@@ -0,0 +1,39 @@
1
+ require File.expand_path('../../../../lib/hydra/remote_identifier', __FILE__)
2
+ module Hydra::RemoteIdentifier
3
+
4
+ describe '.register' do
5
+ let(:remote_service) {
6
+ Class.new(RemoteService) {
7
+ def self.valid_attribute?(*)
8
+ true
9
+ end
10
+ def call(payload)
11
+ :remote_service_response
12
+ end
13
+ }
14
+ }
15
+ let(:target_class) {
16
+ Class.new {
17
+ attr_reader :identifier
18
+ def title; 'a special title'; end
19
+ def update_identifier(value); @identifier = value; end
20
+ }
21
+ }
22
+ let(:target) { target_class.new }
23
+
24
+ it 'should update the registered identifier based on the registered attributes' do
25
+ Hydra::RemoteIdentifier.register(remote_service, target_class) do |config|
26
+ config.title :title
27
+ config.set_identifier :update_identifier
28
+ end
29
+
30
+ expect {
31
+ target_class.registered_remote_identifier_minters.each do |minter|
32
+ minter.call(target)
33
+ end
34
+ }.to change(target, :identifier).from(nil).to(:remote_service_response)
35
+
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,17 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+ RSpec.configure do |config|
8
+ config.treat_symbols_as_metadata_keys_with_true_values = true
9
+ config.run_all_when_everything_filtered = true
10
+ config.filter_run :focus
11
+
12
+ # Run specs in random order to surface order dependencies. If you find an
13
+ # order dependency and want to debug it, you can fix the order by providing
14
+ # the seed, which is printed after each run.
15
+ # --seed 1234
16
+ config.order = 'random'
17
+ end
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hydra-remote_identifier
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jeremy Friesen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.13
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: '5.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.13
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: bundler
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: '1.3'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '1.3'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ description: Handles the registration and minting of remote identifiers (i.e. DOI,
76
+ ARK, ORCID)
77
+ email:
78
+ - jeremy.n.friesen@gmail.com
79
+ executables: []
80
+ extensions: []
81
+ extra_rdoc_files: []
82
+ files:
83
+ - .gitignore
84
+ - .rspec
85
+ - Gemfile
86
+ - LICENSE
87
+ - README.md
88
+ - Rakefile
89
+ - hydra-remote_identifier.gemspec
90
+ - lib/hydra/remote_identifier.rb
91
+ - lib/hydra/remote_identifier/mapper.rb
92
+ - lib/hydra/remote_identifier/minter.rb
93
+ - lib/hydra/remote_identifier/minting_coordinator.rb
94
+ - lib/hydra/remote_identifier/registration.rb
95
+ - lib/hydra/remote_identifier/remote_service.rb
96
+ - lib/hydra/remote_identifier/version.rb
97
+ - spec/lib/hydra/remote_identifier/mapper_spec.rb
98
+ - spec/lib/hydra/remote_identifier/minter_spec.rb
99
+ - spec/lib/hydra/remote_identifier/minting_coordinator_spec.rb
100
+ - spec/lib/hydra/remote_identifier/registration_spec.rb
101
+ - spec/lib/hydra/remote_identifier/remote_service_spec.rb
102
+ - spec/lib/hydra/remote_identifier_spec.rb
103
+ - spec/spec_helper.rb
104
+ homepage: https://github.com/jeremyf/hydra-remote_identifier
105
+ licenses:
106
+ - APACHE2
107
+ metadata: {}
108
+ post_install_message:
109
+ rdoc_options: []
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 2.0.3
125
+ signing_key:
126
+ specification_version: 4
127
+ summary: Handles the registration and minting of remote identifiers (i.e. DOI, ARK,
128
+ ORCID)
129
+ test_files:
130
+ - spec/lib/hydra/remote_identifier/mapper_spec.rb
131
+ - spec/lib/hydra/remote_identifier/minter_spec.rb
132
+ - spec/lib/hydra/remote_identifier/minting_coordinator_spec.rb
133
+ - spec/lib/hydra/remote_identifier/registration_spec.rb
134
+ - spec/lib/hydra/remote_identifier/remote_service_spec.rb
135
+ - spec/lib/hydra/remote_identifier_spec.rb
136
+ - spec/spec_helper.rb