hydra-remote_identifier 0.4.1 → 0.4.2
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 +4 -4
- data/README.md +26 -1
- data/lib/generators/hydra/remote_identifier/install_generator.rb +28 -0
- data/lib/hydra/remote_identifier.rb +5 -0
- data/lib/hydra/remote_identifier/railtie.rb +7 -0
- data/lib/hydra/remote_identifier/version.rb +1 -1
- data/spec/lib/hydra/remote_identifier_spec.rb +19 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6dd65def0770c56f479dbc71aaa0dc462603f1ad
|
4
|
+
data.tar.gz: d79fbb1d6ce12a804369a4ef441598c1effa2fbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29daa6481feda3dd6225bc112b38d6117c717ca50eac693bbe7a5f665c5958a8659fa400cb49f0e2e1bc0fff3da210d05b2358715bd932af99584e031142af7b
|
7
|
+
data.tar.gz: 72ccf7cd67fa4cca2dc617858a760530f2c06537a0e79efc9d2ef9ce62f798d91e84b5a2b378730c05ce4af1fcb0b547ecdb544f90824023aa846151992a14ae
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ Configure your remote identifiers with credentials and what have you:
|
|
28
28
|
config.remote_service(:doi, doi_credentials) do |doi|
|
29
29
|
doi.register(Book, Page) do |map|
|
30
30
|
map.target :url
|
31
|
-
map.creator
|
31
|
+
map.creator {|obj| obj.person_name }
|
32
32
|
map.title :title
|
33
33
|
map.publisher :publisher
|
34
34
|
map.publicationyear :publicationyear
|
@@ -37,6 +37,9 @@ Configure your remote identifiers with credentials and what have you:
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
If you are using Rails, you can run `rails generate hydra:remote_identifier:install` to
|
41
|
+
create a Rails initializer with the above stub file.
|
42
|
+
|
40
43
|
In your views allow users to request that a remote identifier be assigned:
|
41
44
|
|
42
45
|
<%= form_for book do |f| %>
|
@@ -55,3 +58,25 @@ Where your asynchronouse worker does its work request the minting:
|
|
55
58
|
|
56
59
|
# Instantiate target from input
|
57
60
|
Hydra::RemoteIdentifier.mint(remote_service_name, target)
|
61
|
+
|
62
|
+
## Extending Hydra::RemoteIdentifier with alternate remote identifiers
|
63
|
+
|
64
|
+
If you are interested in creating a new Hydra::RemoteIdentifier::RemoteService,
|
65
|
+
this can be done by creating a class in the Hydra::RemoteIdentifier::RemoteServices
|
66
|
+
namespace. See below:
|
67
|
+
|
68
|
+
module Hydra::RemoteIdentifier::RemoteServices
|
69
|
+
class MyRemoteService < Hydra::RemoteIdentifier::RemoteService
|
70
|
+
# your code here
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
Then configure your RemoteService for your persisted targets. See below:
|
75
|
+
|
76
|
+
Hydra::RemoteIdentifier.configure do |config|
|
77
|
+
config.remote_service(:my_remote_service, credentials) do |mine|
|
78
|
+
mine.register(Book, Page) do |map|
|
79
|
+
# map fields of Book, Page to the required payload for MyRemoteService
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
class Hydra::RemoteIdentifier::InstallGenerator < Rails::Generators::Base
|
4
|
+
def create_config
|
5
|
+
initializer('hydra-remote_identifier_config.rb') do
|
6
|
+
data = []
|
7
|
+
|
8
|
+
data << '# Register and configure remote identifiers for persisted objects'
|
9
|
+
data << 'Hydra::RemoteIdentifier.configure do |config|'
|
10
|
+
data << ''
|
11
|
+
data << '# doi_credentials = Psych.load("/path/to/doi_credentials.yml")'
|
12
|
+
data << '# config.remote_service(:doi, doi_credentials) do |doi|'
|
13
|
+
data << '# doi.register(PersistedObject) do |map|'
|
14
|
+
data << '# map.target :url'
|
15
|
+
data << '# map.creator {|obj| obj.person_name }'
|
16
|
+
data << '# map.title :title'
|
17
|
+
data << '# map.publisher :publisher'
|
18
|
+
data << '# map.publicationyear :publicationyear'
|
19
|
+
data << '# map.set_identifier :set_doi_identifier='
|
20
|
+
data << '# end'
|
21
|
+
data << '# end'
|
22
|
+
data << ''
|
23
|
+
data << 'end'
|
24
|
+
|
25
|
+
data.join("\n")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -2,6 +2,7 @@ require "hydra/remote_identifier/version"
|
|
2
2
|
require 'hydra/remote_identifier/configuration'
|
3
3
|
require 'hydra/remote_identifier/registration'
|
4
4
|
require 'hydra/remote_identifier/remote_service'
|
5
|
+
require 'hydra/remote_identifier/railtie' if defined?(Rails)
|
5
6
|
|
6
7
|
module Hydra::RemoteIdentifier
|
7
8
|
|
@@ -42,6 +43,7 @@ module Hydra::RemoteIdentifier
|
|
42
43
|
# @param remote_service_name [#to_s]
|
43
44
|
# @param target [#registered_remote_identifier_minters] (see Hydra::RemoteIdentifier.configure)
|
44
45
|
def with_registered_remote_service(remote_service_name, target)
|
46
|
+
return false unless target.respond_to?(:registered_remote_identifier_minters)
|
45
47
|
# @TODO - the registered remote identifier is more than a bit off;
|
46
48
|
# but it continues to work
|
47
49
|
target.registered_remote_identifier_minters.each {|coordinator|
|
@@ -62,6 +64,7 @@ module Hydra::RemoteIdentifier
|
|
62
64
|
# @param target [#registered_remote_identifier_minters] (see Hydra::RemoteIdentifier.configure)
|
63
65
|
# @yield_param remote_service_name [#to_s]
|
64
66
|
def requested_remote_identifiers_for(target)
|
67
|
+
return false unless target.respond_to?(:registered_remote_identifier_minters)
|
65
68
|
target.registered_remote_identifier_minters.each do |coordinator|
|
66
69
|
remote_service = coordinator.remote_service
|
67
70
|
if target.public_send(remote_service.accessor_name).to_i != 0
|
@@ -80,6 +83,8 @@ module Hydra::RemoteIdentifier
|
|
80
83
|
# @param remote_service_name [#to_s]
|
81
84
|
# @param target [#registered_remote_identifier_minters] (see Hydra::RemoteIdentifier.configure)
|
82
85
|
def mint(remote_service_name, target)
|
86
|
+
return false unless target.respond_to?(:registered_remote_identifier_minters)
|
87
|
+
|
83
88
|
# @TODO - there is a better way to do this but this is "complete/correct"
|
84
89
|
remote_service = configuration.find_remote_service(remote_service_name)
|
85
90
|
target.registered_remote_identifier_minters.each do |coordinator|
|
@@ -53,12 +53,19 @@ module Hydra::RemoteIdentifier
|
|
53
53
|
}.to yield_with_args(RemoteServices::Doi)
|
54
54
|
end
|
55
55
|
|
56
|
-
it 'should not yield the service
|
56
|
+
it 'should not yield the service is not registered' do
|
57
57
|
expect {|block|
|
58
58
|
Hydra::RemoteIdentifier.with_registered_remote_service(:alternate, target, &block)
|
59
59
|
}.to_not yield_control
|
60
60
|
end
|
61
61
|
|
62
|
+
it 'should not yield the service if the target is not registered' do
|
63
|
+
target = double
|
64
|
+
expect {|block|
|
65
|
+
Hydra::RemoteIdentifier.with_registered_remote_service(:doi, target, &block)
|
66
|
+
}.to_not yield_control
|
67
|
+
end
|
68
|
+
|
62
69
|
end
|
63
70
|
|
64
71
|
describe '.mint' do
|
@@ -69,6 +76,10 @@ module Hydra::RemoteIdentifier
|
|
69
76
|
}.to change(target, :set_identifier).from(nil).to(expected_doi)
|
70
77
|
end
|
71
78
|
|
79
|
+
it 'returns false if the target is not configured for identifiers' do
|
80
|
+
expect(Hydra::RemoteIdentifier.mint(:doi, double)).to eq(false)
|
81
|
+
end
|
82
|
+
|
72
83
|
end
|
73
84
|
|
74
85
|
describe '.requested_remote_identifiers_for' do
|
@@ -87,6 +98,13 @@ module Hydra::RemoteIdentifier
|
|
87
98
|
}.to_not yield_control
|
88
99
|
end
|
89
100
|
|
101
|
+
it 'should not yield when the remote identifier if target is not configured' do
|
102
|
+
target = double
|
103
|
+
expect { |block|
|
104
|
+
Hydra::RemoteIdentifier.requested_remote_identifiers_for(target, &block)
|
105
|
+
}.to_not yield_control
|
106
|
+
end
|
107
|
+
|
90
108
|
end
|
91
109
|
|
92
110
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-remote_identifier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Friesen
|
@@ -103,12 +103,14 @@ files:
|
|
103
103
|
- README.md
|
104
104
|
- Rakefile
|
105
105
|
- hydra-remote_identifier.gemspec
|
106
|
+
- lib/generators/hydra/remote_identifier/install_generator.rb
|
106
107
|
- lib/hydra/remote_identifier.rb
|
107
108
|
- lib/hydra/remote_identifier/configuration.rb
|
108
109
|
- lib/hydra/remote_identifier/exceptions.rb
|
109
110
|
- lib/hydra/remote_identifier/mapper.rb
|
110
111
|
- lib/hydra/remote_identifier/minter.rb
|
111
112
|
- lib/hydra/remote_identifier/minting_coordinator.rb
|
113
|
+
- lib/hydra/remote_identifier/railtie.rb
|
112
114
|
- lib/hydra/remote_identifier/registration.rb
|
113
115
|
- lib/hydra/remote_identifier/remote_service.rb
|
114
116
|
- lib/hydra/remote_identifier/remote_services.rb
|