dpn-client 1.3.1 → 2.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 +4 -4
- data/.gitignore +3 -0
- data/Gemfile.lock +16 -4
- data/README.md +1 -2
- data/dpn-client.gemspec +3 -1
- data/lib/dpn/client/agent.rb +12 -4
- data/lib/dpn/client/agent/bag.rb +16 -28
- data/lib/dpn/client/agent/configuration.rb +8 -4
- data/lib/dpn/client/agent/connection.rb +36 -35
- data/lib/dpn/client/agent/digest.rb +60 -0
- data/lib/dpn/client/agent/fixity_check.rb +41 -0
- data/lib/dpn/client/agent/ingest.rb +42 -0
- data/lib/dpn/client/agent/member.rb +35 -38
- data/lib/dpn/client/agent/node.rb +5 -42
- data/lib/dpn/client/agent/replicate.rb +21 -33
- data/lib/dpn/client/agent/restore.rb +60 -0
- data/lib/dpn/client/response.rb +1 -3
- data/lib/dpn/client/version.rb +1 -1
- metadata +36 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29bc947b3dc7eae26d526bf33466eff74b1faace
|
4
|
+
data.tar.gz: 717644a7872c356e8b578d7d79fd7d8897554806
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12a3cfcb42b6114c6725d0516609fe635d9ce63f4319265a383a516f21e14f5784e5fbc09d0c226c353abb9916dc45a388775108142f4f782a2d48a360d22166
|
7
|
+
data.tar.gz: 32783328da098a1acc306abb002e5c71ea8405b380b342e0953383a682a0dee6d54b75b566a1bdd3f33893c484e32c5f5489ed2461be89c942e1e267cb6f725d
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
dpn-client (
|
5
|
-
httpclient (~> 2.
|
4
|
+
dpn-client (2.0.1)
|
5
|
+
httpclient (~> 2.8.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
@@ -10,12 +10,21 @@ GEM
|
|
10
10
|
addressable (2.3.8)
|
11
11
|
codeclimate-test-reporter (0.4.8)
|
12
12
|
simplecov (>= 0.7.1, < 1.0.0)
|
13
|
+
coderay (1.1.0)
|
13
14
|
crack (0.4.2)
|
14
15
|
safe_yaml (~> 1.0.0)
|
15
16
|
diff-lcs (1.2.5)
|
16
17
|
docile (1.1.5)
|
17
|
-
httpclient (2.
|
18
|
+
httpclient (2.8.2.4)
|
18
19
|
json (1.8.3)
|
20
|
+
method_source (0.8.2)
|
21
|
+
pry (0.10.3)
|
22
|
+
coderay (~> 1.1.0)
|
23
|
+
method_source (~> 0.8.1)
|
24
|
+
slop (~> 3.4)
|
25
|
+
pry-doc (0.8.0)
|
26
|
+
pry (~> 0.9)
|
27
|
+
yard (~> 0.8)
|
19
28
|
rake (10.4.2)
|
20
29
|
rspec (3.3.0)
|
21
30
|
rspec-core (~> 3.3.0)
|
@@ -36,6 +45,7 @@ GEM
|
|
36
45
|
json (~> 1.8)
|
37
46
|
simplecov-html (~> 0.10.0)
|
38
47
|
simplecov-html (0.10.0)
|
48
|
+
slop (3.6.0)
|
39
49
|
webmock (1.21.0)
|
40
50
|
addressable (>= 2.3.6)
|
41
51
|
crack (>= 0.3.2)
|
@@ -48,10 +58,12 @@ DEPENDENCIES
|
|
48
58
|
bundler (~> 1.10)
|
49
59
|
codeclimate-test-reporter
|
50
60
|
dpn-client!
|
61
|
+
pry
|
62
|
+
pry-doc
|
51
63
|
rake (~> 10.0)
|
52
64
|
rspec
|
53
65
|
webmock
|
54
66
|
yard
|
55
67
|
|
56
68
|
BUNDLED WITH
|
57
|
-
1.
|
69
|
+
1.12.5
|
data/README.md
CHANGED
data/dpn-client.gemspec
CHANGED
@@ -24,9 +24,11 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
25
|
spec.require_paths = ["lib"]
|
26
26
|
|
27
|
-
spec.add_runtime_dependency "httpclient", "~> 2.
|
27
|
+
spec.add_runtime_dependency "httpclient", "~> 2.8.0"
|
28
28
|
|
29
29
|
spec.add_development_dependency "bundler", "~> 1.10"
|
30
|
+
spec.add_development_dependency "pry"
|
31
|
+
spec.add_development_dependency "pry-doc"
|
30
32
|
spec.add_development_dependency "rake", "~> 10.0"
|
31
33
|
spec.add_development_dependency "rspec"
|
32
34
|
spec.add_development_dependency "yard"
|
data/lib/dpn/client/agent.rb
CHANGED
@@ -5,10 +5,14 @@
|
|
5
5
|
|
6
6
|
require "dpn/client/agent/configuration"
|
7
7
|
require "dpn/client/agent/connection"
|
8
|
-
require "dpn/client/agent/node"
|
9
8
|
require "dpn/client/agent/bag"
|
10
|
-
require "dpn/client/agent/
|
9
|
+
require "dpn/client/agent/digest"
|
10
|
+
require "dpn/client/agent/fixity_check"
|
11
|
+
require "dpn/client/agent/ingest"
|
11
12
|
require "dpn/client/agent/member"
|
13
|
+
require "dpn/client/agent/node"
|
14
|
+
require "dpn/client/agent/replicate"
|
15
|
+
require "dpn/client/agent/restore"
|
12
16
|
|
13
17
|
module DPN
|
14
18
|
module Client
|
@@ -16,10 +20,14 @@ module DPN
|
|
16
20
|
include DPN::Client::Agent::Configuration
|
17
21
|
include DPN::Client::Agent::Connection
|
18
22
|
|
19
|
-
include DPN::Client::Agent::Node
|
20
23
|
include DPN::Client::Agent::Bag
|
21
|
-
include DPN::Client::Agent::
|
24
|
+
include DPN::Client::Agent::Digest
|
25
|
+
include DPN::Client::Agent::FixityCheck
|
26
|
+
include DPN::Client::Agent::Ingest
|
22
27
|
include DPN::Client::Agent::Member
|
28
|
+
include DPN::Client::Agent::Node
|
29
|
+
include DPN::Client::Agent::Replicate
|
30
|
+
include DPN::Client::Agent::Restore
|
23
31
|
|
24
32
|
def initialize(options = {})
|
25
33
|
self.configure(options)
|
data/lib/dpn/client/agent/bag.rb
CHANGED
@@ -15,40 +15,28 @@ module DPN
|
|
15
15
|
# before this date.
|
16
16
|
# @option options [DateTime String] :after (nil) Include only entries last modified
|
17
17
|
# after this date.
|
18
|
+
# @option options [String] :bag_type (nil) One of 'D', 'R', 'I', for data, rights, and
|
19
|
+
# interpretive, respectively.
|
18
20
|
# @option options [String] :admin_node (nil) Namespace of the admin_node of the bag.
|
21
|
+
# @option options [String] :ingest_node (nil) Namespace of the ingest_node of the bag.
|
19
22
|
# @option options [String] :member (nil) The UUID of the member that owns or is vested
|
20
23
|
# in this bag.
|
21
|
-
# @option options [String] :
|
22
|
-
#
|
23
|
-
#
|
24
|
-
# @
|
25
|
-
#
|
24
|
+
# @option options [String] :first_version_uuid (nil) UUIDv4 of the bag's first version.
|
25
|
+
# @option options [Array<String>] :replicated_by ([]) Namespaces of replicating nodes; the
|
26
|
+
# result is the UNION of these filters.
|
27
|
+
# @yield [Response] Block to process each individual bag.
|
28
|
+
# @see Connection#paginate
|
26
29
|
def bags(options = {page_size: 25}, &block)
|
27
|
-
|
28
|
-
if options[date_field].is_a?(DateTime)
|
29
|
-
options[date_field] = options[:date_field].new_offset(0).strftime(DPN::Client.time_format)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
return paginate_each "/bag/", options, options[:page_size], &block
|
30
|
+
paginate_each "/bag/", options, options[:page_size], &block
|
34
31
|
end
|
35
32
|
|
36
33
|
|
37
|
-
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
41
|
-
|
42
|
-
|
43
|
-
# Alias for #bags
|
44
|
-
# @return [Array<Hash>]
|
45
|
-
# @see #bags
|
46
|
-
def bag(uuid = nil, options = {page_size: 25}, &block)
|
47
|
-
if uuid
|
48
|
-
get "/bag/#{uuid}/", nil, &block
|
49
|
-
else
|
50
|
-
bags(options, &block)
|
51
|
-
end
|
34
|
+
# Get a specific bag
|
35
|
+
# @param [String] uuid UUID of the bag.
|
36
|
+
# @yield [Response]
|
37
|
+
# @return [Response]
|
38
|
+
def bag(uuid, &block)
|
39
|
+
get "/bag/#{uuid}/", nil, &block
|
52
40
|
end
|
53
41
|
|
54
42
|
|
@@ -57,7 +45,7 @@ module DPN
|
|
57
45
|
# @yield [Response]
|
58
46
|
# @return [Response]
|
59
47
|
def create_bag(bag, &block)
|
60
|
-
post "/bag", bag, &block
|
48
|
+
post "/bag/", bag, &block
|
61
49
|
end
|
62
50
|
|
63
51
|
|
@@ -26,6 +26,13 @@ module DPN
|
|
26
26
|
:per_page, :user_agent
|
27
27
|
attr_writer :logger
|
28
28
|
|
29
|
+
def api_ver
|
30
|
+
@api_ver ||= "api-v#{DPN::Client.api_version}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def base_url
|
34
|
+
@api_root
|
35
|
+
end
|
29
36
|
|
30
37
|
# Apply the options hash to the configuration
|
31
38
|
def configure(options_hash = {})
|
@@ -50,9 +57,6 @@ module DPN
|
|
50
57
|
end
|
51
58
|
alias_method :setup, :reset
|
52
59
|
|
53
|
-
def base_url
|
54
|
-
File.join(@api_root, "api-v#{DPN::Client.api_version}")
|
55
|
-
end
|
56
60
|
|
57
61
|
def logger
|
58
62
|
@logger ||= NullLogger.new
|
@@ -77,4 +81,4 @@ module DPN
|
|
77
81
|
end
|
78
82
|
end
|
79
83
|
end
|
80
|
-
end
|
84
|
+
end
|
@@ -57,7 +57,7 @@ module DPN
|
|
57
57
|
end
|
58
58
|
|
59
59
|
|
60
|
-
# Make
|
60
|
+
# Make one or more GET requests, fetching the next
|
61
61
|
# page of results one page at a time, so long as the
|
62
62
|
# response indicates there is another page.
|
63
63
|
# @param url [String] The path, relative to base_url
|
@@ -73,6 +73,12 @@ module DPN
|
|
73
73
|
query ||= {}
|
74
74
|
query = query.merge({ :page_size => page_size, :page => 1})
|
75
75
|
|
76
|
+
[:after, :before].each do |date_field|
|
77
|
+
if query[date_field].is_a?(DateTime)
|
78
|
+
query[date_field] = query[:date_field].new_offset(0).strftime(DPN::Client.time_format)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
76
82
|
response = get(url, query) # pass an empty block so we can call the block manually on :results
|
77
83
|
yield response
|
78
84
|
while response.success? && response[:next] && response[:results].empty? == false
|
@@ -93,15 +99,16 @@ module DPN
|
|
93
99
|
# @param page_size [Fixnum] The number of results to request
|
94
100
|
# from each page.
|
95
101
|
# @yield [Response] Mandatory block that takes each individual
|
96
|
-
# result wrapped in a response object as a parameter.
|
97
|
-
# request
|
102
|
+
# result wrapped in a response object as a parameter. Should
|
103
|
+
# a request receive an error, the error will be wrapped in
|
104
|
+
# a response object and yielded.
|
98
105
|
def paginate_each(url, query, page_size, &block)
|
99
|
-
raise ArgumentError, "
|
106
|
+
raise ArgumentError, "Block required" unless block_given?
|
100
107
|
paginate(url, query, (page_size || 25)) do |response|
|
101
108
|
if response.success?
|
102
109
|
logger.info("Response has #{response[:results].size} results.")
|
103
110
|
response[:results].each do |result|
|
104
|
-
|
111
|
+
yield Response.from_data(response.status, result)
|
105
112
|
end
|
106
113
|
else
|
107
114
|
yield response
|
@@ -112,6 +119,18 @@ module DPN
|
|
112
119
|
|
113
120
|
protected
|
114
121
|
|
122
|
+
def connection
|
123
|
+
@connection ||= ::HTTPClient.new({
|
124
|
+
agent_name: user_agent,
|
125
|
+
base_url: base_url,
|
126
|
+
default_header: {
|
127
|
+
"Content-Type" => "application/json",
|
128
|
+
"Authorization" => "Token #{auth_token}"
|
129
|
+
},
|
130
|
+
force_basic_auth: true
|
131
|
+
})
|
132
|
+
end
|
133
|
+
|
115
134
|
def request(method, url, query, body, &block)
|
116
135
|
url, extra_query = parse_url(url)
|
117
136
|
query ||= {}
|
@@ -120,50 +139,32 @@ module DPN
|
|
120
139
|
body: body.to_json,
|
121
140
|
follow_redirect: true
|
122
141
|
}
|
123
|
-
|
124
|
-
|
125
|
-
raw_response = connection.request method, fix_url(url), options
|
142
|
+
logger.info("Sending #{method.upcase}: #{File.join(base_url, url)} #{options} ")
|
143
|
+
raw_response = connection.request method, url, options
|
126
144
|
logger.debug("Received #{raw_response.inspect}")
|
127
145
|
response = DPN::Client::Response.new(raw_response)
|
128
146
|
logger.info("Received #{response.status}")
|
129
147
|
if block_given?
|
130
148
|
yield response
|
131
149
|
end
|
132
|
-
|
133
|
-
return response
|
150
|
+
response
|
134
151
|
end
|
135
152
|
|
136
|
-
|
137
153
|
def parse_url(raw_url)
|
138
154
|
url, query = raw_url.split("?", 2)
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
return url, query
|
146
|
-
end
|
147
|
-
|
148
|
-
|
149
|
-
def connection
|
150
|
-
@connection ||= ::HTTPClient.new({
|
151
|
-
agent_name: user_agent,
|
152
|
-
base_url: base_url,
|
153
|
-
default_header: {
|
154
|
-
"Content-Type" => "application/json",
|
155
|
-
"Authorization" => "Token #{auth_token}"
|
156
|
-
},
|
157
|
-
force_basic_auth: true
|
158
|
-
})
|
155
|
+
query = if query
|
156
|
+
URI.decode_www_form(query).to_h
|
157
|
+
else
|
158
|
+
{}
|
159
|
+
end
|
160
|
+
return fix_url(url), query
|
159
161
|
end
|
160
162
|
|
161
|
-
|
162
163
|
def fix_url(url)
|
163
|
-
File.join url
|
164
|
+
url = File.join(api_ver, url) unless url.include?(api_ver)
|
165
|
+
File.join "/", url, "/"
|
164
166
|
end
|
165
167
|
|
166
|
-
|
167
168
|
# Convert array values to csv
|
168
169
|
# Only goes one level deep.
|
169
170
|
# @param [Hash] hash
|
@@ -180,4 +181,4 @@ module DPN
|
|
180
181
|
end
|
181
182
|
end
|
182
183
|
end
|
183
|
-
end
|
184
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Copyright (c) 2015 The Regents of the University of Michigan.
|
2
|
+
# All Rights Reserved.
|
3
|
+
# Licensed according to the terms of the Revised BSD License
|
4
|
+
# See LICENSE.md for details.
|
5
|
+
|
6
|
+
module DPN
|
7
|
+
module Client
|
8
|
+
class Agent
|
9
|
+
|
10
|
+
# Operations on the digest resource.
|
11
|
+
module Digest
|
12
|
+
|
13
|
+
# Get the digests index
|
14
|
+
# @param [Hash] options
|
15
|
+
# @option options [Fixnum] :page_size (25) Number of results per page
|
16
|
+
# @option options [DateTime String] :before (nil) Include only entries last modified
|
17
|
+
# before this date.
|
18
|
+
# @option options [DateTime String] :after (nil) Include only entries last modified
|
19
|
+
# after this date.
|
20
|
+
# @yield [Response] Block to process each individual result.
|
21
|
+
def digests(options = {page_size: 25}, &block)
|
22
|
+
paginate_each "/digest/", options, options[:page_size], &block
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
# Get the digests for a specific bag
|
27
|
+
# @option options [Fixnum] :page_size (25) Number of results per page
|
28
|
+
# @option options [DateTime String] :before (nil) Include only entries last modified
|
29
|
+
# before this date.
|
30
|
+
# @option options [DateTime String] :after (nil) Include only entries last modified
|
31
|
+
# after this date.
|
32
|
+
# @yield [Response] Block to process each individual result.
|
33
|
+
def bag_digests(bag, options = {page_size: 25}, &block)
|
34
|
+
paginate_each "/bag/#{bag}/digest/", options, options[:page_size], &block
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
# Get a specific digest
|
39
|
+
# @param [String] bag UUIDv4 of the bag.
|
40
|
+
# @param [String] algorithm Name of the algorithm.
|
41
|
+
# @yield [Response] Optional block to process the response.
|
42
|
+
# @return [Response]
|
43
|
+
def digest(bag, algorithm, &block)
|
44
|
+
get "/bag/#{bag}/digest/#{algorithm}/", nil, &block
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
# Create a digest
|
49
|
+
# @param [Hash] digest Body of the digest
|
50
|
+
# @yield [Response]
|
51
|
+
# @return [Response]
|
52
|
+
def create_digest(digest, &block)
|
53
|
+
post "/bag/#{digest[:bag]}/digest/", digest, &block
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# Copyright (c) 2015 The Regents of the University of Michigan.
|
2
|
+
# All Rights Reserved.
|
3
|
+
# Licensed according to the terms of the Revised BSD License
|
4
|
+
# See LICENSE.md for details.
|
5
|
+
|
6
|
+
module DPN
|
7
|
+
module Client
|
8
|
+
class Agent
|
9
|
+
|
10
|
+
# Operations on the fixity_check resource.
|
11
|
+
module FixityCheck
|
12
|
+
|
13
|
+
# Get the fixity_check index
|
14
|
+
# @param [Hash] options
|
15
|
+
# @option options [Fixnum] :page_size (25) Number of results per page
|
16
|
+
# @option options [DateTime String] :before (nil) Include only entries last modified
|
17
|
+
# before this date.
|
18
|
+
# @option options [DateTime String] :after (nil) Include only entries last modified
|
19
|
+
# after this date.
|
20
|
+
# @option options [String] bag (nil) Filter by a specific bag's UUID.
|
21
|
+
# @option options [Boolean] latest (false) Request latest results only.
|
22
|
+
# @option options [String] :node (nil) Namespace of the node.
|
23
|
+
# @yield [Response] Block to process each individual result.
|
24
|
+
def fixity_checks(options = {page_size: 25}, &block)
|
25
|
+
paginate_each "/fixity_check/", options, options[:page_size], &block
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
# Create a fixity_check
|
30
|
+
# @param [Hash] fixity_check Body of the fixity_check
|
31
|
+
# @yield [Response]
|
32
|
+
# @return [Response]
|
33
|
+
def create_fixity_check(fixity_check, &block)
|
34
|
+
post "/fixity_check/", fixity_check, &block
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# Copyright (c) 2015 The Regents of the University of Michigan.
|
2
|
+
# All Rights Reserved.
|
3
|
+
# Licensed according to the terms of the Revised BSD License
|
4
|
+
# See LICENSE.md for details.
|
5
|
+
|
6
|
+
module DPN
|
7
|
+
module Client
|
8
|
+
class Agent
|
9
|
+
|
10
|
+
# Operations on the ingest resource.
|
11
|
+
module Ingest
|
12
|
+
|
13
|
+
# Get the ingest index
|
14
|
+
# @param [Hash] options
|
15
|
+
# @option options [Fixnum] :page_size (25) Number of results per page
|
16
|
+
# @option options [DateTime String] :before (nil) Include only entries last modified
|
17
|
+
# before this date.
|
18
|
+
# @option options [DateTime String] :after (nil) Include only entries last modified
|
19
|
+
# after this date.
|
20
|
+
# @option options [String] bag (nil) Filter by a specific bag's UUID.
|
21
|
+
# @option options [Boolean] latest (false) Request latest results only.
|
22
|
+
# @option options [Boolean] ingested (nil) Filter by value of the ingested field.
|
23
|
+
# @option options [String] :node (nil) Namespace of the node.
|
24
|
+
# @yield [Response] Block to process each individual result.
|
25
|
+
def ingests(options = {page_size: 25}, &block)
|
26
|
+
paginate_each "/ingest/", options, options[:page_size], &block
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
# Create a ingest
|
31
|
+
# @param [Hash] ingest Body of the ingest
|
32
|
+
# @yield [Response]
|
33
|
+
# @return [Response]
|
34
|
+
def create_ingest(ingest, &block)
|
35
|
+
post "/ingest/", ingest, &block
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -13,29 +13,41 @@ module DPN
|
|
13
13
|
# Get the members index
|
14
14
|
# @param [Hash] options
|
15
15
|
# @option options [Fixnum] :page_size (25) Number of members per page
|
16
|
-
# @
|
17
|
-
#
|
18
|
-
#
|
16
|
+
# @option options [DateTime String] :before (nil) Include only entries last modified
|
17
|
+
# before this date.
|
18
|
+
# @option options [DateTime String] :after (nil) Include only entries last modified
|
19
|
+
# after this date.
|
20
|
+
# @yield [Response] Block to process each individual member.
|
19
21
|
def members(options = {page_size: 25}, &block)
|
20
|
-
|
22
|
+
paginate_each "/member/", options, options[:page_size], &block
|
21
23
|
end
|
22
24
|
|
23
25
|
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
26
|
+
# Get a specific member
|
27
|
+
# @param [String] member_id UUIDv4 of the member.
|
28
|
+
# @yield [Response] Optional block to process the response.
|
29
|
+
# @return [Response]
|
30
|
+
def member(member_id, &block)
|
31
|
+
get "/member/#{member_id}/", nil, &block
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
# Get a member's bags
|
36
|
+
# @param [String] member_id The specific member's member_id
|
37
|
+
# @param [Hash] options
|
38
|
+
# @option options [Fixnum] :page_size (25) Number of entries per page
|
39
|
+
# @option options [DateTime String] :before (nil) Include only entries last modified
|
40
|
+
# before this date.
|
41
|
+
# @option options [DateTime String] :after (nil) Include only entries last modified
|
42
|
+
# after this date.
|
43
|
+
# @option options [String] :admin_node (nil) Namespace of the admin_node of the bag.
|
44
|
+
# @option options [String] :bag_type (nil) One of 'D', 'R', 'I', for data, rights, and
|
45
|
+
# interpretive, respectively.
|
46
|
+
# @yield [Response] Optional block to process individual bag.
|
47
|
+
# @return [Array<Hash>] Array of all bag data. Generated and returned
|
48
|
+
# only if no block is passed.
|
49
|
+
def member_bags(member_id, options = {page_size: 25}, &block)
|
50
|
+
paginate_each "/member/#{member_id}/bags/", options, options[:page_size], &block
|
39
51
|
end
|
40
52
|
|
41
53
|
|
@@ -53,34 +65,19 @@ module DPN
|
|
53
65
|
# @yield [Response]
|
54
66
|
# @return [Response]
|
55
67
|
def update_member(member, &block)
|
56
|
-
put "/member/#{
|
68
|
+
put "/member/#{member[:member_id]}/", member, &block
|
57
69
|
end
|
58
70
|
|
59
71
|
|
60
72
|
# Delete a member
|
61
|
-
# @param [String]
|
73
|
+
# @param [String] member_id UUIDv4 of the member.
|
62
74
|
# @yield [Response]
|
63
75
|
# @return [Response]
|
64
|
-
def delete_member(
|
65
|
-
delete "/member/#{
|
76
|
+
def delete_member(member_id, &block)
|
77
|
+
delete "/member/#{member_id}/", &block
|
66
78
|
end
|
67
79
|
|
68
80
|
|
69
|
-
private
|
70
|
-
# Add dashes to a uuid if they are missing
|
71
|
-
def fix_uuid(uuid)
|
72
|
-
if uuid && uuid.size == 32
|
73
|
-
unless uuid.include?("-")
|
74
|
-
uuid.insert(8, "-") # 9th, 14th, 19th and 24th
|
75
|
-
uuid.insert(13, "-")
|
76
|
-
uuid.insert(18, "-")
|
77
|
-
uuid.insert(23, "-")
|
78
|
-
end
|
79
|
-
end
|
80
|
-
uuid.downcase
|
81
|
-
end
|
82
|
-
|
83
|
-
|
84
81
|
end
|
85
82
|
|
86
83
|
end
|
@@ -10,41 +10,12 @@ module DPN
|
|
10
10
|
# Operations on the node resource.
|
11
11
|
module Node
|
12
12
|
|
13
|
-
# Get
|
14
|
-
# @param [
|
15
|
-
# @
|
16
|
-
# @yield [Response] Optional block to process each individual node.
|
17
|
-
# @return [Array<Hash>] Array of all node data. Generated and returned
|
18
|
-
# only if no block is passed.
|
19
|
-
def nodes(options = {page_size: 25}, &block)
|
20
|
-
return paginate_each "/node/", options, options[:page_size], &block
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
# @overload node(namespace, &block)
|
25
|
-
# Get a specific node
|
26
|
-
# @param [String] namespace Namespace of the node.
|
27
|
-
# @yield [Response] Optional block to process the response.
|
28
|
-
# @return [Response]
|
29
|
-
# @overload node(options, &block)
|
30
|
-
# Alias for #nodes
|
31
|
-
# @return [Array<Hash>]
|
32
|
-
# @see #nodes
|
33
|
-
def node(namespace = nil, options = {page_size: 25}, &block)
|
34
|
-
if namespace
|
35
|
-
get "/node/#{namespace}/", nil, &block
|
36
|
-
else
|
37
|
-
nodes(options, &block)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
# Create a node
|
43
|
-
# @param [Hash] node Body of the node
|
44
|
-
# @yield [Response]
|
13
|
+
# Get a specific node
|
14
|
+
# @param [String] namespace Namespace of the node.
|
15
|
+
# @yield [Response] Optional block to process the response.
|
45
16
|
# @return [Response]
|
46
|
-
def
|
47
|
-
|
17
|
+
def node(namespace, &block)
|
18
|
+
get "/node/#{namespace}/", nil, &block
|
48
19
|
end
|
49
20
|
|
50
21
|
|
@@ -57,14 +28,6 @@ module DPN
|
|
57
28
|
end
|
58
29
|
|
59
30
|
|
60
|
-
# Delete a node
|
61
|
-
# @param [String] namespace Namespace of the node.
|
62
|
-
# @yield [Response]
|
63
|
-
# @return [Response]
|
64
|
-
def delete_node(namespace, &block)
|
65
|
-
delete "/node/#{namespace}/", &block
|
66
|
-
end
|
67
|
-
|
68
31
|
end
|
69
32
|
end
|
70
33
|
end
|
@@ -11,25 +11,20 @@ module DPN
|
|
11
11
|
# Get the replication request index
|
12
12
|
# @param [Hash] options
|
13
13
|
# @option options [Fixnum] :page_size (25) Number of entries per page
|
14
|
-
# @option options [DateTime
|
15
|
-
#
|
16
|
-
# @option options [String]
|
17
|
-
#
|
18
|
-
# @option options [
|
19
|
-
# @option options [Boolean] bag_valid (nil) Filter by the value of bag_valid.
|
20
|
-
# @option options [String] :from_node (nil) Namespace of the from_node of the bag.
|
14
|
+
# @option options [DateTime String] :before (nil) Include only entries last modified
|
15
|
+
# before this date.
|
16
|
+
# @option options [DateTime String] :after (nil) Include only entries last modified
|
17
|
+
# after this date.
|
18
|
+
# @option options [String] bag (nil) Filter by a specific bag's UUID.
|
21
19
|
# @option options [String] :to_node (nil) Namespace of the to_node of the bag.
|
22
|
-
# @option options [String] :
|
23
|
-
#
|
24
|
-
# @
|
25
|
-
# @
|
26
|
-
#
|
20
|
+
# @option options [String] :from_node (nil) Namespace of the from_node of the bag.
|
21
|
+
# @option options [Boolean] store_requested (nil) Filter by the value of store_requested.
|
22
|
+
# @option options [Boolean] stored (nil) Filter by the value of stored.
|
23
|
+
# @option options [Boolean] cancelled (nil) Filter by the value of cancelled.
|
24
|
+
# @option options [String] cancel_reason (nil) Filter by cancel_reason.
|
25
|
+
# @yield [Response] Block to process each individual replication.
|
27
26
|
def replications(options = {page_size: 25}, &block)
|
28
|
-
|
29
|
-
options[:after] = options[:after].new_offset(0).strftime(DPN::Client.time_format)
|
30
|
-
end
|
31
|
-
|
32
|
-
return paginate_each "/replicate/", options, options[:page_size], &block
|
27
|
+
paginate_each "/replicate/", options, options[:page_size], &block
|
33
28
|
end
|
34
29
|
|
35
30
|
|
@@ -42,12 +37,14 @@ module DPN
|
|
42
37
|
# Alias for #replications
|
43
38
|
# @return [Array<Hash>]
|
44
39
|
# @see #replications
|
45
|
-
def replicate(replication_id
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
40
|
+
def replicate(replication_id, &block)
|
41
|
+
get "/replicate/#{replication_id}/", nil, &block
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
# Alias of #replicate
|
46
|
+
def replication(replication_id, &block)
|
47
|
+
replicate replication_id, &block
|
51
48
|
end
|
52
49
|
|
53
50
|
|
@@ -56,7 +53,7 @@ module DPN
|
|
56
53
|
# @yield [Response]
|
57
54
|
# @return [Response]
|
58
55
|
def create_replication(request, &block)
|
59
|
-
post "/replicate", request, &block
|
56
|
+
post "/replicate/", request, &block
|
60
57
|
end
|
61
58
|
|
62
59
|
|
@@ -68,15 +65,6 @@ module DPN
|
|
68
65
|
put "/replicate/#{request[:replication_id]}/", request, &block
|
69
66
|
end
|
70
67
|
|
71
|
-
|
72
|
-
# Delete a replication request
|
73
|
-
# @param [String] replication_id The replication_id of the replication request
|
74
|
-
# @yield [Response]
|
75
|
-
# @return [Response]
|
76
|
-
def delete_replication(replication_id, &block)
|
77
|
-
delete "/replicate/#{replication_id}/", &block
|
78
|
-
end
|
79
|
-
|
80
68
|
end
|
81
69
|
end
|
82
70
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Copyright (c) 2015 The Regents of the University of Michigan.
|
2
|
+
# All Rights Reserved.
|
3
|
+
# Licensed according to the terms of the Revised BSD License
|
4
|
+
# See LICENSE.md for details.
|
5
|
+
|
6
|
+
module DPN
|
7
|
+
module Client
|
8
|
+
class Agent
|
9
|
+
module Restore
|
10
|
+
|
11
|
+
# Get the restore request index
|
12
|
+
# @param [Hash] options
|
13
|
+
# @option options [Fixnum] :page_size (25) Number of entries per page
|
14
|
+
# @option options [DateTime String] :before (nil) Include only entries last modified
|
15
|
+
# before this date.
|
16
|
+
# @option options [DateTime String] :after (nil) Include only entries last modified
|
17
|
+
# after this date.
|
18
|
+
# @option options [String] bag (nil) Filter by a specific bag's UUID.
|
19
|
+
# @option options [String] :to_node (nil) Namespace of the to_node of the bag.
|
20
|
+
# @option options [String] :from_node (nil) Namespace of the from_node of the bag.
|
21
|
+
# @option options [Boolean] accepted (nil) Filter by the value of accepted.
|
22
|
+
# @option options [Boolean] finished (nil) Filter by the value of finished.
|
23
|
+
# @option options [Boolean] cancelled (nil) Filter by the value of cancelled.
|
24
|
+
# @option options [String] cancel_reason (nil) Filter by cancel_reason.
|
25
|
+
# @yield [Response] Block to process each individual result.
|
26
|
+
def restores(options = {page_size: 25}, &block)
|
27
|
+
paginate_each "/restore/", options, options[:page_size], &block
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
# Get a specific restore request.
|
32
|
+
# @param [String] restore_id
|
33
|
+
# @yield [Response]
|
34
|
+
# @return [Response]
|
35
|
+
def restore(restore_id, &block)
|
36
|
+
get "/restore/#{restore_id}/", nil, &block
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
# Create a restore request
|
41
|
+
# @param [Hash] request Body of the restore request
|
42
|
+
# @yield [Response]
|
43
|
+
# @return [Response]
|
44
|
+
def create_restore(request, &block)
|
45
|
+
post "/restore/", request, &block
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
# Update a restore request
|
50
|
+
# @param [Hash] request Body of the restore request
|
51
|
+
# @yield [Response]
|
52
|
+
# @return [Response]
|
53
|
+
def update_restore(request, &block)
|
54
|
+
put "/restore/#{request[:restore_id]}/", request, &block
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/dpn/client/response.rb
CHANGED
data/lib/dpn/client/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dpn-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Hockey
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httpclient
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.8.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.8.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.10'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry-doc
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: rake
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,9 +157,13 @@ files:
|
|
129
157
|
- lib/dpn/client/agent/bag.rb
|
130
158
|
- lib/dpn/client/agent/configuration.rb
|
131
159
|
- lib/dpn/client/agent/connection.rb
|
160
|
+
- lib/dpn/client/agent/digest.rb
|
161
|
+
- lib/dpn/client/agent/fixity_check.rb
|
162
|
+
- lib/dpn/client/agent/ingest.rb
|
132
163
|
- lib/dpn/client/agent/member.rb
|
133
164
|
- lib/dpn/client/agent/node.rb
|
134
165
|
- lib/dpn/client/agent/replicate.rb
|
166
|
+
- lib/dpn/client/agent/restore.rb
|
135
167
|
- lib/dpn/client/response.rb
|
136
168
|
- lib/dpn/client/version.rb
|
137
169
|
homepage: https://github.com/dpn-admin/dpn-client
|