preservation-client 3.2.1 → 3.3.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 295c6b5719f6730587b25339215cb69a2a0577c83bb703cc0bc17bb0372b64e3
|
4
|
+
data.tar.gz: 26c60ca8f89488ed4d8e9ee301fb1632727ddb852ddaf4f2db796cf97f0a51f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d715a4987ea8c1091ba263eed8975feb66ab15e58669011860376a43ce7c80f7bbf771701f4416e9309fe7fb1dfa08e7986c0d7bf556bab939eab419e4c3fae
|
7
|
+
data.tar.gz: 2f27d27f5c0c02b0a9fb18943e5c25228e6e6d0f5ca24e190da9d7de20146f8f80d437f1351f659a627178ea52933c185aea811dcad6eff82586d6977ff6e733
|
data/lib/preservation/client.rb
CHANGED
@@ -17,13 +17,18 @@ module Preservation
|
|
17
17
|
class Client
|
18
18
|
class Error < StandardError; end
|
19
19
|
|
20
|
-
# Error
|
20
|
+
# Error raised when server returns 404 Not Found
|
21
21
|
class NotFoundError < Error; end
|
22
22
|
|
23
|
-
# Error
|
24
|
-
|
23
|
+
# Error raised when server returns 423 Locked
|
24
|
+
class LockedError < Error; end
|
25
|
+
|
26
|
+
# Error raised when server returns an unexpected response
|
27
|
+
# e.g., 4xx or 5xx status not otherwise handled
|
25
28
|
class UnexpectedResponseError < Error; end
|
26
29
|
|
30
|
+
# Error raised when Faraday gem fails to connect, e.g., on SSL errors or
|
31
|
+
# timeouts
|
27
32
|
class ConnectionFailedError < Error; end
|
28
33
|
|
29
34
|
DEFAULT_API_VERSION = 'v1'
|
@@ -75,6 +75,7 @@ module Preservation
|
|
75
75
|
# @param [String] druid - with or without prefix: 'druid:ab123cd4567' or 'ab123cd4567'
|
76
76
|
# @return [String] the storage location of the primary moab for the given druid
|
77
77
|
# @raise [Preservation::Client::NotFoundError] when druid is not found
|
78
|
+
# @raise [Preservation::Client::LockedError] when druid is in locked state (not available for versioning)
|
78
79
|
def primary_moab_location(druid:)
|
79
80
|
get("objects/#{druid}/primary_moab_location", {}, on_data: nil)
|
80
81
|
end
|
@@ -25,14 +25,14 @@ module Preservation
|
|
25
25
|
|
26
26
|
errmsg = ResponseErrorFormatter
|
27
27
|
.format(response: resp, object_id: object_id, client_method_name: caller_locations.first.label)
|
28
|
-
raise
|
28
|
+
raise UnexpectedResponseError, errmsg
|
29
29
|
rescue Faraday::ResourceNotFound
|
30
30
|
errmsg = "#{object_id} not found in Preservation at #{connection.url_prefix}#{req_url}"
|
31
|
-
raise
|
31
|
+
raise NotFoundError, errmsg
|
32
32
|
rescue Faraday::Error => e
|
33
33
|
errmsg = "Preservation::Client.#{caller_locations.first.label} for #{object_id} " \
|
34
34
|
"got #{e.response[:status]} from Preservation at #{req_url}: #{e.response[:body]}"
|
35
|
-
raise
|
35
|
+
raise UnexpectedResponseError, errmsg
|
36
36
|
end
|
37
37
|
|
38
38
|
# @param path [String] path to be appended to connection url (no leading slash)
|
@@ -83,18 +83,20 @@ module Preservation
|
|
83
83
|
request_json = params.to_json if params&.any?
|
84
84
|
connection.public_send(method, req_url, request_json, 'Content-Type' => 'application/json')
|
85
85
|
end
|
86
|
+
|
86
87
|
return resp.body if resp.success?
|
87
88
|
|
88
89
|
errmsg = ResponseErrorFormatter.format(response: resp, client_method_name: caller_locations.first.label)
|
89
|
-
raise
|
90
|
+
raise UnexpectedResponseError, errmsg
|
90
91
|
rescue Faraday::ResourceNotFound => e
|
91
92
|
errmsg = "Preservation::Client.#{caller_locations.first.label} " \
|
92
93
|
"got #{e.response[:status]} from Preservation at #{req_url}: #{e.response[:body]}"
|
93
|
-
raise
|
94
|
+
raise NotFoundError, errmsg
|
94
95
|
rescue Faraday::Error => e
|
95
96
|
errmsg = "Preservation::Client.#{caller_locations.first.label} " \
|
96
97
|
"got #{e.response[:status]} from Preservation at #{req_url}: #{e.response[:body]}"
|
97
|
-
|
98
|
+
exception_class = e.response[:status] == 423 ? LockedError : UnexpectedResponseError
|
99
|
+
raise exception_class, errmsg
|
98
100
|
end
|
99
101
|
end
|
100
102
|
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: 3.
|
4
|
+
version: 3.3.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: 2020-
|
11
|
+
date: 2020-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -225,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
225
|
- !ruby/object:Gem::Version
|
226
226
|
version: '0'
|
227
227
|
requirements: []
|
228
|
-
rubygems_version: 3.
|
228
|
+
rubygems_version: 3.0.6
|
229
229
|
signing_key:
|
230
230
|
specification_version: 4
|
231
231
|
summary: A thin client for getting info from SDR preservation.
|