dor-services-client 6.35.0 → 6.36.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: 0f284625ef5de76b844cbfa7569c83e1dc7deae5d19c94b4bb845f1cf69bab2e
4
- data.tar.gz: 37cce8c5f6f95008bec16638f4ed2d30dd19ad01e7eb6da5e4b58ac2b330f7b4
3
+ metadata.gz: 9a432159ad7c4d7f287ec97a252c2783e3e3a7c2d67cea054577727b97acfa52
4
+ data.tar.gz: 710bca4a6fd453a73842b534616f5a8eae79040544ab563f1141e5151f903fde
5
5
  SHA512:
6
- metadata.gz: 5b3f568bce673ef4d722d8140a7db715d35234e1312718205d9b352850899b10b59daaac34771ad27efe9a8715b6be5b4ba1c396d6fdc068c17b83e32abb4fcf
7
- data.tar.gz: 5307d1ff1cd2a067168e452996761bb8bfde4b4c62ddf63cc070cb35478fe1dbe6b13fa1f6a3accf9dfc7bc6758dc496acea4cfe111bea4737f47231c4c1835b
6
+ metadata.gz: '0486fff69b07ebd63f409b9b8f587622fa6595d279a8cfc657dfbd230016d433fe2b01fd9b6ecef9742067bb9467e79d91d4fea28aecb38dd2601f5d7b114431'
7
+ data.tar.gz: 99a486c70acb3b5926977555be3515d16dc8ff062661427037b585014024ba929515b8a71d3e2911a7118d9309222a89e10cfbd39a41d0c6c10f5d58c62436a9
data/.rubocop.yml CHANGED
@@ -8,3 +8,72 @@ Metrics/BlockLength:
8
8
  Exclude:
9
9
  - 'dor-services-client.gemspec'
10
10
  - 'spec/**/*'
11
+
12
+ Gemspec/DateAssignment: # (new in 1.10)
13
+ Enabled: true
14
+ Layout/SpaceBeforeBrackets: # (new in 1.7)
15
+ Enabled: true
16
+ Lint/AmbiguousAssignment: # (new in 1.7)
17
+ Enabled: true
18
+ Lint/DeprecatedConstants: # (new in 1.8)
19
+ Enabled: true
20
+ Lint/DuplicateBranch: # (new in 1.3)
21
+ Enabled: true
22
+ Lint/DuplicateRegexpCharacterClassElement: # (new in 1.1)
23
+ Enabled: true
24
+ Lint/EmptyBlock: # (new in 1.1)
25
+ Enabled: true
26
+ Lint/EmptyClass: # (new in 1.3)
27
+ Enabled: true
28
+ Lint/EmptyInPattern: # (new in 1.16)
29
+ Enabled: true
30
+ Lint/LambdaWithoutLiteralBlock: # (new in 1.8)
31
+ Enabled: true
32
+ Lint/NoReturnInBeginEndBlocks: # (new in 1.2)
33
+ Enabled: true
34
+ Lint/NumberedParameterAssignment: # (new in 1.9)
35
+ Enabled: true
36
+ Lint/OrAssignmentToConstant: # (new in 1.9)
37
+ Enabled: true
38
+ Lint/RedundantDirGlobSort: # (new in 1.8)
39
+ Enabled: true
40
+ Lint/SymbolConversion: # (new in 1.9)
41
+ Enabled: true
42
+ Lint/ToEnumArguments: # (new in 1.1)
43
+ Enabled: true
44
+ Lint/TripleQuotes: # (new in 1.9)
45
+ Enabled: true
46
+ Lint/UnexpectedBlockArity: # (new in 1.5)
47
+ Enabled: true
48
+ Lint/UnmodifiedReduceAccumulator: # (new in 1.1)
49
+ Enabled: true
50
+ Style/ArgumentsForwarding: # (new in 1.1)
51
+ Enabled: true
52
+ Style/CollectionCompact: # (new in 1.2)
53
+ Enabled: true
54
+ Style/DocumentDynamicEvalDefinition: # (new in 1.1)
55
+ Enabled: true
56
+ Style/EndlessMethod: # (new in 1.8)
57
+ Enabled: true
58
+ Style/HashConversion: # (new in 1.10)
59
+ Enabled: true
60
+ Style/HashExcept: # (new in 1.7)
61
+ Enabled: true
62
+ Style/IfWithBooleanLiteralBranches: # (new in 1.9)
63
+ Enabled: true
64
+ Style/InPatternThen: # (new in 1.16)
65
+ Enabled: true
66
+ Style/MultilineInPatternThen: # (new in 1.16)
67
+ Enabled: true
68
+ Style/NegatedIfElseCondition: # (new in 1.2)
69
+ Enabled: true
70
+ Style/NilLambda: # (new in 1.3)
71
+ Enabled: true
72
+ Style/QuotedSymbols: # (new in 1.16)
73
+ Enabled: true
74
+ Style/RedundantArgument: # (new in 1.4)
75
+ Enabled: true
76
+ Style/StringChars: # (new in 1.12)
77
+ Enabled: true
78
+ Style/SwapValues: # (new in 1.1)
79
+ Enabled: true
@@ -26,11 +26,17 @@ module Dor
26
26
  # Base class for Dor::Services::Client exceptions
27
27
  class Error < StandardError; end
28
28
 
29
- # Error that is raised when the remote server returns a 404 Not Found
29
+ # Error that is raised when the ultimate remote server returns a 404 Not Found for the id in our request (e.g. for druid, barcode, catkey)
30
30
  class NotFoundResponse < Error; end
31
31
 
32
+ # Error that is raised when the remote server returns some unparsable response
33
+ class MalformedResponse < Error; end
34
+
35
+ # Error that wraps Faraday connection exceptions
36
+ class ConnectionFailed < Error; end
37
+
32
38
  # Error that is raised when the remote server returns some unexpected response
33
- # this could be any 4xx or 5xx status
39
+ # this could be any 4xx or 5xx status (except the ones that are direct children of the Error class above)
34
40
  class UnexpectedResponse < Error; end
35
41
 
36
42
  # Error that is raised when the remote server returns a 401 Unauthorized
@@ -39,11 +45,8 @@ module Dor
39
45
  # Error that is raised when the remote server returns a 409 Conflict
40
46
  class ConflictResponse < UnexpectedResponse; end
41
47
 
42
- # Error that is raised when the remote server returns some unparsable response
43
- class MalformedResponse < Error; end
44
-
45
- # Error that wraps Faraday connection exceptions
46
- class ConnectionFailed < Error; end
48
+ # Error that is raised when the remote server returns a 400 Bad Request; apps should not retry the request
49
+ class BadRequestError < UnexpectedResponse; end
47
50
 
48
51
  # @param object_identifier [String] the pid for the object
49
52
  # @raise [ArgumentError] when `object_identifier` is `nil`
@@ -21,6 +21,7 @@ module Dor
21
21
  return resp.body if resp.success? && resp.body.present?
22
22
 
23
23
  # This method needs its own exception handling logic due to how the endpoint service (SearchWorks) operates
24
+ # raise a NotFoundResponse because the resource being requested was not found in the ILS (via dor-services-app)
24
25
  raise NotFoundResponse, ResponseErrorFormatter.format(response: resp) if resp.success? && resp.body.blank?
25
26
 
26
27
  raise UnexpectedResponse, ResponseErrorFormatter.format(response: resp)
@@ -42,10 +43,12 @@ module Dor
42
43
  end
43
44
 
44
45
  # This method needs its own exception handling logic due to how the endpoint service (Symphony) operates
45
- #
46
+
46
47
  # DOR Services App does not respond with a 404 when no match in Symphony.
47
48
  # Rather, it responds with a 500 containing "Record not found in Symphony" in the body.
49
+ # raise a NotFoundResponse because the resource being requested was not found in the ILS (via dor-services-app)
48
50
  raise NotFoundResponse, ResponseErrorFormatter.format(response: resp) if !resp.success? && resp.body.match?(/Record not found in Symphony/)
51
+
49
52
  raise UnexpectedResponse, ResponseErrorFormatter.format(response: resp) unless resp.success?
50
53
 
51
54
  resp.body
@@ -3,7 +3,7 @@
3
3
  module Dor
4
4
  module Services
5
5
  class Client
6
- VERSION = '6.35.0'
6
+ VERSION = '6.36.0'
7
7
  end
8
8
  end
9
9
  end
@@ -22,10 +22,12 @@ module Dor
22
22
  # rubocop:disable Metrics/MethodLength
23
23
  def raise_exception_based_on_response!(response, object_identifier = nil)
24
24
  exception_class = case response.status
25
- when 404
26
- NotFoundResponse
25
+ when 400
26
+ BadRequestError
27
27
  when 401
28
28
  UnauthorizedResponse
29
+ when 404
30
+ NotFoundResponse
29
31
  when 409
30
32
  ConflictResponse
31
33
  else
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dor-services-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.35.0
4
+ version: 6.36.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2021-06-07 00:00:00.000000000 Z
12
+ date: 2021-06-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport