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 +7 -0
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/LICENSE +16 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/hydra-remote_identifier.gemspec +26 -0
- data/lib/hydra/remote_identifier/mapper.rb +93 -0
- data/lib/hydra/remote_identifier/minter.rb +31 -0
- data/lib/hydra/remote_identifier/minting_coordinator.rb +37 -0
- data/lib/hydra/remote_identifier/registration.rb +44 -0
- data/lib/hydra/remote_identifier/remote_service.rb +16 -0
- data/lib/hydra/remote_identifier/version.rb +5 -0
- data/lib/hydra/remote_identifier.rb +11 -0
- data/spec/lib/hydra/remote_identifier/mapper_spec.rb +51 -0
- data/spec/lib/hydra/remote_identifier/minter_spec.rb +25 -0
- data/spec/lib/hydra/remote_identifier/minting_coordinator_spec.rb +17 -0
- data/spec/lib/hydra/remote_identifier/registration_spec.rb +26 -0
- data/spec/lib/hydra/remote_identifier/remote_service_spec.rb +13 -0
- data/spec/lib/hydra/remote_identifier_spec.rb +39 -0
- data/spec/spec_helper.rb +17 -0
- metadata +136 -0
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
data/.rspec
ADDED
data/Gemfile
ADDED
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,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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|