preservation-client 0.1.0 → 0.2.0
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/.github/pull_request_template.md +4 -0
- data/.rubocop.yml +4 -0
- data/README.md +3 -1
- data/lib/preservation/client/objects.rb +8 -1
- data/lib/preservation/client/version.rb +1 -1
- data/lib/preservation/client/{versioned_service.rb → versioned_api_service.rb} +20 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd5473aaca131902c39dfed9a2f64f040f05fe058f88240a837bca61513e0aed
|
4
|
+
data.tar.gz: 0d4cabcf05268572e99869d5bb0919d94b7118d5ebf52a5de9a9acd50b1f1ca8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c773deeb4f5106de43b9a8a87287ca6a87c3437419bbc25b2f208aee43c3f0de4c76a5835919aeecb2decc0f1458d5043337a9786f3ac5a71b4b5f2acf6de1d6
|
7
|
+
data.tar.gz: 95f6a7d7b736354ed67ab3dac8e5260d3cddd3dfa48486758e6ed926bc67f2101cdb61cf2ff60a6c0056f419eaa93b43d696ab58724c84faa01990ef51051ce3
|
data/.rubocop.yml
CHANGED
@@ -8,6 +8,7 @@ Layout/EmptyLinesAroundClassBody:
|
|
8
8
|
|
9
9
|
Metrics/BlockLength:
|
10
10
|
Exclude:
|
11
|
+
- 'preservation-client.gemspec'
|
11
12
|
- 'spec/**/*'
|
12
13
|
|
13
14
|
Metrics/LineLength:
|
@@ -23,3 +24,6 @@ Style/Documentation:
|
|
23
24
|
Exclude:
|
24
25
|
- 'spec/**/*'
|
25
26
|
- 'lib/preservation/client.rb'
|
27
|
+
|
28
|
+
Style/WordArray:
|
29
|
+
Enabled: false
|
data/README.md
CHANGED
@@ -48,7 +48,9 @@ Note that the preservation service is behind a firewall.
|
|
48
48
|
|
49
49
|
## API Coverage
|
50
50
|
|
51
|
-
|
51
|
+
- Preservation::Client.objects.current_version('oo000oo0000') (can also be 'druid:oo000oo0000')
|
52
|
+
- Preservation::Client.objects.checksums(druids: druids) - will return raw csv
|
53
|
+
- Preservation::Client.objects.checksums(druids: druids, format: 'json') - will return json
|
52
54
|
|
53
55
|
## Development
|
54
56
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Preservation
|
4
4
|
class Client
|
5
5
|
# API calls that are about Preserved Objects
|
6
|
-
class Objects <
|
6
|
+
class Objects < VersionedApiService
|
7
7
|
|
8
8
|
# @param [String] druid - with or without prefix: 'druid:ab123cd4567' OR 'ab123cd4567'
|
9
9
|
# @return [Integer] the current version of the Preserved Object
|
@@ -11,6 +11,13 @@ module Preservation
|
|
11
11
|
resp_body = get_json("objects/#{druid}.json", druid, 'current_version')
|
12
12
|
resp_body[:current_version]
|
13
13
|
end
|
14
|
+
|
15
|
+
# @param [Array] druids - required list of druids with or without prefix: 'druid:ab123cd4567' OR 'ab123cd4567'
|
16
|
+
# @param [String] :resp_format - desired format of the HTTP response (default csv, json also possible)
|
17
|
+
# @return body of HTTP response from Preservation API
|
18
|
+
def checksums(druids: [], resp_format: 'csv')
|
19
|
+
post('objects/checksums', { druids: druids, format: resp_format }, 'checksums')
|
20
|
+
end
|
14
21
|
end
|
15
22
|
end
|
16
23
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Preservation
|
4
4
|
class Client
|
5
5
|
# @abstract API calls to a versioned endpoint
|
6
|
-
class
|
6
|
+
class VersionedApiService
|
7
7
|
def initialize(connection:, api_version:)
|
8
8
|
@connection = connection
|
9
9
|
@api_version = api_version
|
@@ -13,6 +13,7 @@ module Preservation
|
|
13
13
|
|
14
14
|
attr_reader :connection, :api_version
|
15
15
|
|
16
|
+
# @param path [String] path to be appended to connection url (no leading slash)
|
16
17
|
def get_json(path, object_id, caller_method_name)
|
17
18
|
resp = connection.get do |req|
|
18
19
|
req.url api_version.present? ? "#{api_version}/#{path}" : path
|
@@ -31,6 +32,24 @@ module Preservation
|
|
31
32
|
errmsg = "HTTP GET to #{connection.url_prefix}#{path} failed with #{e.class}: #{e.message}"
|
32
33
|
raise Preservation::Client::UnexpectedResponseError, errmsg
|
33
34
|
end
|
35
|
+
|
36
|
+
# @param path [String] path to be appended to connection url (no leading slash)
|
37
|
+
# @param params [Hash] optional params
|
38
|
+
def post(path, params, caller_method_name)
|
39
|
+
post_path = api_version.present? ? "#{api_version}/#{path}" : path
|
40
|
+
resp = connection.post post_path, params
|
41
|
+
return resp.body if resp.success?
|
42
|
+
|
43
|
+
errmsg = ResponseErrorFormatter
|
44
|
+
.format(response: resp, client_method_name: caller_method_name)
|
45
|
+
raise Preservation::Client::UnexpectedResponseError, errmsg
|
46
|
+
rescue Faraday::ResourceNotFound => e
|
47
|
+
errmsg = "HTTP POST to #{connection.url_prefix}#{path} failed with #{e.class}: #{e.message}"
|
48
|
+
raise Preservation::Client::NotFoundError, errmsg
|
49
|
+
rescue Faraday::ParsingError, Faraday::RetriableResponse => e
|
50
|
+
errmsg = "HTTP POST to #{connection.url_prefix}#{path} failed with #{e.class}: #{e.message}"
|
51
|
+
raise Preservation::Client::UnexpectedResponseError, errmsg
|
52
|
+
end
|
34
53
|
end
|
35
54
|
end
|
36
55
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: preservation-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naomi Dushay
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -164,6 +164,7 @@ executables: []
|
|
164
164
|
extensions: []
|
165
165
|
extra_rdoc_files: []
|
166
166
|
files:
|
167
|
+
- ".github/pull_request_template.md"
|
167
168
|
- ".gitignore"
|
168
169
|
- ".rspec"
|
169
170
|
- ".rubocop.yml"
|
@@ -180,7 +181,7 @@ files:
|
|
180
181
|
- lib/preservation/client/objects.rb
|
181
182
|
- lib/preservation/client/response_error_formatter.rb
|
182
183
|
- lib/preservation/client/version.rb
|
183
|
-
- lib/preservation/client/
|
184
|
+
- lib/preservation/client/versioned_api_service.rb
|
184
185
|
- preservation-client.gemspec
|
185
186
|
homepage: https://github.com/sul-dlss/preservation-client
|
186
187
|
licenses: []
|