dor-workflow-client 3.24.0 → 5.0.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/.circleci/config.yml +8 -33
- data/.github/pull_request_template.md +3 -5
- data/.gitignore +0 -2
- data/.rubocop.yml +105 -2
- data/.rubocop_todo.yml +42 -9
- data/Gemfile +1 -0
- data/Gemfile.lock +122 -0
- data/README.md +1 -1
- data/dor-workflow-client.gemspec +9 -5
- data/lib/dor/workflow/client/connection_factory.rb +3 -8
- data/lib/dor/workflow/client/lifecycle_routes.rb +4 -71
- data/lib/dor/workflow/client/queues.rb +13 -46
- data/lib/dor/workflow/client/status.rb +0 -2
- data/lib/dor/workflow/client/version.rb +1 -1
- data/lib/dor/workflow/client/version_routes.rb +1 -23
- data/lib/dor/workflow/client/workflow_routes.rb +11 -149
- data/lib/dor/workflow/client.rb +2 -2
- data/lib/dor/workflow/response/process.rb +1 -2
- data/lib/dor/workflow/response/workflow.rb +1 -9
- data/spec/models/response/process_spec.rb +0 -17
- data/spec/models/response/workflow_spec.rb +1 -17
- data/spec/workflow/client/lifecycle_routes_spec.rb +18 -152
- data/spec/workflow/client/version_routes_spec.rb +1 -44
- data/spec/workflow/client/workflow_routes_spec.rb +13 -0
- data/spec/workflow/client_spec.rb +9 -258
- metadata +51 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 660ca959342689ef767c9b7d6ce72f90ec5d568227e1acab968c7cf5b2e9bb95
|
4
|
+
data.tar.gz: e5c19e4cf9c2f79edc1cefaa0b9dbe4954866c2f29357fd58425d173662422ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7f985246d0238a872a26f9fcab9a65f7d2795be9b7946dffa4fba5cb2557203184de1ec1e1b4a758405a397c34dc991ef74290e8d5d5d28691b69984c18ddfd
|
7
|
+
data.tar.gz: c458009469d0684198722475fbe01a1dce917272298b18494979ed63957e399ea76830f1c22036ae0e21b46fb7ac31481b1e37e5f715916ee217648cb62526cc
|
data/.circleci/config.yml
CHANGED
@@ -1,35 +1,10 @@
|
|
1
1
|
version: 2.1
|
2
|
-
|
3
|
-
|
2
|
+
orbs:
|
3
|
+
ruby-rails: sul-dlss/ruby-rails@3.1.2
|
4
|
+
workflows:
|
4
5
|
build:
|
5
|
-
|
6
|
-
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
steps:
|
11
|
-
- checkout
|
12
|
-
- run:
|
13
|
-
name: Install Bundler
|
14
|
-
command: gem install bundler
|
15
|
-
- run:
|
16
|
-
name: Which bundler?
|
17
|
-
command: bundle -v
|
18
|
-
- run:
|
19
|
-
name: Bundle Install
|
20
|
-
command: bundle check || bundle install
|
21
|
-
- run:
|
22
|
-
name: Lint using rubocop
|
23
|
-
command: bundle exec rubocop
|
24
|
-
- run:
|
25
|
-
name: Setup Code Climate test-reporter
|
26
|
-
command: |
|
27
|
-
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
28
|
-
chmod +x ./cc-test-reporter
|
29
|
-
./cc-test-reporter before-build
|
30
|
-
- run:
|
31
|
-
name: rspec
|
32
|
-
command: bundle exec rspec
|
33
|
-
- run:
|
34
|
-
name: upload test coverage report to Code Climate
|
35
|
-
command: ./cc-test-reporter after-build --coverage-input-type simplecov --exit-code $?
|
6
|
+
jobs:
|
7
|
+
- ruby-rails/lint:
|
8
|
+
name: lint
|
9
|
+
- ruby-rails/test-gem:
|
10
|
+
name: test
|
@@ -1,12 +1,10 @@
|
|
1
|
-
## Why was this change made?
|
1
|
+
## Why was this change made? 🤔
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
## How was this change tested?
|
5
|
+
## How was this change tested? 🤨
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
## Which documentation and/or configurations were updated?
|
7
|
+
⚡ ⚠ If this change affects the API or other fundamentals of this service, ***run [integration tests](https://github.com/sul-dlss/infrastructure-integration-test)*** that exercise this service and/or test in [stage|qa] environment, in addition to specs. ⚡
|
10
8
|
|
11
9
|
|
12
10
|
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,11 +1,114 @@
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
2
2
|
|
3
3
|
AllCops:
|
4
|
-
TargetRubyVersion:
|
4
|
+
TargetRubyVersion: 3.0
|
5
5
|
# Configuration parameters: AllowURI, URISchemes.
|
6
|
-
|
6
|
+
Layout/LineLength:
|
7
7
|
Max: 300
|
8
8
|
|
9
9
|
Metrics/BlockLength:
|
10
10
|
Exclude:
|
11
11
|
- spec/**/*_spec.rb
|
12
|
+
|
13
|
+
Gemspec/DeprecatedAttributeAssignment: # new in 1.10
|
14
|
+
Enabled: true
|
15
|
+
Gemspec/RequireMFA: # new in 1.23
|
16
|
+
Enabled: true
|
17
|
+
Layout/LineEndStringConcatenationIndentation: # new in 1.18
|
18
|
+
Enabled: true
|
19
|
+
Layout/SpaceBeforeBrackets: # new in 1.7
|
20
|
+
Enabled: true
|
21
|
+
Lint/AmbiguousAssignment: # new in 1.7
|
22
|
+
Enabled: true
|
23
|
+
Lint/AmbiguousOperatorPrecedence: # new in 1.21
|
24
|
+
Enabled: true
|
25
|
+
Lint/AmbiguousRange: # new in 1.19
|
26
|
+
Enabled: true
|
27
|
+
Lint/DeprecatedConstants: # new in 1.8
|
28
|
+
Enabled: true
|
29
|
+
Lint/DuplicateBranch: # new in 1.3
|
30
|
+
Enabled: true
|
31
|
+
Lint/DuplicateRegexpCharacterClassElement: # new in 1.1
|
32
|
+
Enabled: true
|
33
|
+
Lint/EmptyBlock: # new in 1.1
|
34
|
+
Enabled: true
|
35
|
+
Lint/EmptyClass: # new in 1.3
|
36
|
+
Enabled: true
|
37
|
+
Lint/EmptyInPattern: # new in 1.16
|
38
|
+
Enabled: true
|
39
|
+
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
|
40
|
+
Enabled: true
|
41
|
+
Lint/LambdaWithoutLiteralBlock: # new in 1.8
|
42
|
+
Enabled: true
|
43
|
+
Lint/NoReturnInBeginEndBlocks: # new in 1.2
|
44
|
+
Enabled: true
|
45
|
+
Lint/NumberedParameterAssignment: # new in 1.9
|
46
|
+
Enabled: true
|
47
|
+
Lint/OrAssignmentToConstant: # new in 1.9
|
48
|
+
Enabled: true
|
49
|
+
Lint/RedundantDirGlobSort: # new in 1.8
|
50
|
+
Enabled: true
|
51
|
+
Lint/RequireRelativeSelfPath: # new in 1.22
|
52
|
+
Enabled: true
|
53
|
+
Lint/SymbolConversion: # new in 1.9
|
54
|
+
Enabled: true
|
55
|
+
Lint/ToEnumArguments: # new in 1.1
|
56
|
+
Enabled: true
|
57
|
+
Lint/TripleQuotes: # new in 1.9
|
58
|
+
Enabled: true
|
59
|
+
Lint/UnexpectedBlockArity: # new in 1.5
|
60
|
+
Enabled: true
|
61
|
+
Lint/UnmodifiedReduceAccumulator: # new in 1.1
|
62
|
+
Enabled: true
|
63
|
+
Lint/UselessRuby2Keywords: # new in 1.23
|
64
|
+
Enabled: true
|
65
|
+
Naming/BlockForwarding: # new in 1.24
|
66
|
+
Enabled: true
|
67
|
+
Security/IoMethods: # new in 1.22
|
68
|
+
Enabled: true
|
69
|
+
Style/ArgumentsForwarding: # new in 1.1
|
70
|
+
Enabled: true
|
71
|
+
Style/CollectionCompact: # new in 1.2
|
72
|
+
Enabled: true
|
73
|
+
Style/DocumentDynamicEvalDefinition: # new in 1.1
|
74
|
+
Enabled: true
|
75
|
+
Style/EndlessMethod: # new in 1.8
|
76
|
+
Enabled: true
|
77
|
+
Style/FileRead: # new in 1.24
|
78
|
+
Enabled: true
|
79
|
+
Style/FileWrite: # new in 1.24
|
80
|
+
Enabled: true
|
81
|
+
Style/HashConversion: # new in 1.10
|
82
|
+
Enabled: true
|
83
|
+
Style/HashExcept: # new in 1.7
|
84
|
+
Enabled: true
|
85
|
+
Style/IfWithBooleanLiteralBranches: # new in 1.9
|
86
|
+
Enabled: true
|
87
|
+
Style/InPatternThen: # new in 1.16
|
88
|
+
Enabled: true
|
89
|
+
Style/MapToHash: # new in 1.24
|
90
|
+
Enabled: true
|
91
|
+
Style/MultilineInPatternThen: # new in 1.16
|
92
|
+
Enabled: true
|
93
|
+
Style/NegatedIfElseCondition: # new in 1.2
|
94
|
+
Enabled: true
|
95
|
+
Style/NilLambda: # new in 1.3
|
96
|
+
Enabled: true
|
97
|
+
Style/NumberedParameters: # new in 1.22
|
98
|
+
Enabled: true
|
99
|
+
Style/NumberedParametersLimit: # new in 1.22
|
100
|
+
Enabled: true
|
101
|
+
Style/OpenStructUse: # new in 1.23
|
102
|
+
Enabled: true
|
103
|
+
Style/QuotedSymbols: # new in 1.16
|
104
|
+
Enabled: true
|
105
|
+
Style/RedundantArgument: # new in 1.4
|
106
|
+
Enabled: true
|
107
|
+
Style/RedundantSelfAssignmentBranch: # new in 1.19
|
108
|
+
Enabled: true
|
109
|
+
Style/SelectByRegexp: # new in 1.22
|
110
|
+
Enabled: true
|
111
|
+
Style/StringChars: # new in 1.12
|
112
|
+
Enabled: true
|
113
|
+
Style/SwapValues: # new in 1.1
|
114
|
+
Enabled: true
|
data/.rubocop_todo.yml
CHANGED
@@ -1,25 +1,58 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
3
|
+
# on 2022-06-28 04:56:14 UTC using RuboCop version 1.31.0.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
-
# Offense count:
|
10
|
-
|
11
|
-
|
9
|
+
# Offense count: 1
|
10
|
+
# Configuration parameters: Include.
|
11
|
+
# Include: **/*.gemspec
|
12
|
+
Gemspec/RequiredRubyVersion:
|
13
|
+
Exclude:
|
14
|
+
- 'dor-workflow-client.gemspec'
|
12
15
|
|
13
16
|
# Offense count: 1
|
14
|
-
|
15
|
-
|
17
|
+
# Configuration parameters: AllowComments, AllowEmptyLambdas.
|
18
|
+
Lint/EmptyBlock:
|
19
|
+
Exclude:
|
20
|
+
- 'spec/workflow/client/workflow_routes_spec.rb'
|
16
21
|
|
17
22
|
# Offense count: 1
|
18
|
-
|
23
|
+
Lint/NoReturnInBeginEndBlocks:
|
24
|
+
Exclude:
|
25
|
+
- 'lib/dor/workflow/client/status.rb'
|
26
|
+
|
27
|
+
# Offense count: 5
|
28
|
+
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
|
29
|
+
Metrics/AbcSize:
|
30
|
+
Max: 23
|
31
|
+
|
32
|
+
# Offense count: 2
|
33
|
+
# Configuration parameters: IgnoredMethods.
|
34
|
+
Metrics/CyclomaticComplexity:
|
35
|
+
Max: 8
|
36
|
+
|
37
|
+
# Offense count: 2
|
38
|
+
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
|
19
39
|
Metrics/MethodLength:
|
20
|
-
Max:
|
40
|
+
Max: 19
|
21
41
|
|
22
42
|
# Offense count: 3
|
23
|
-
# Configuration parameters: CountKeywordArgs.
|
43
|
+
# Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
|
24
44
|
Metrics/ParameterLists:
|
25
45
|
Max: 8
|
46
|
+
|
47
|
+
# Offense count: 1
|
48
|
+
# This cop supports safe autocorrection (--autocorrect).
|
49
|
+
Style/KeywordParametersOrder:
|
50
|
+
Exclude:
|
51
|
+
- 'lib/dor/workflow/client/workflow_routes.rb'
|
52
|
+
|
53
|
+
# Offense count: 1
|
54
|
+
# This cop supports safe autocorrection (--autocorrect).
|
55
|
+
# Configuration parameters: AllowModifier.
|
56
|
+
Style/SoleNestedConditional:
|
57
|
+
Exclude:
|
58
|
+
- 'lib/dor/workflow/client/status.rb'
|
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
dor-workflow-client (5.0.0)
|
5
|
+
activesupport (>= 3.2.1, < 8)
|
6
|
+
deprecation (>= 0.99.0)
|
7
|
+
faraday (~> 2.0)
|
8
|
+
faraday-retry (~> 1.0)
|
9
|
+
nokogiri (~> 1.6)
|
10
|
+
zeitwerk (~> 2.1)
|
11
|
+
|
12
|
+
GEM
|
13
|
+
remote: https://rubygems.org/
|
14
|
+
specs:
|
15
|
+
activesupport (7.0.3.1)
|
16
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
17
|
+
i18n (>= 1.6, < 2)
|
18
|
+
minitest (>= 5.1)
|
19
|
+
tzinfo (~> 2.0)
|
20
|
+
addressable (2.8.0)
|
21
|
+
public_suffix (>= 2.0.2, < 5.0)
|
22
|
+
ast (2.4.2)
|
23
|
+
byebug (11.1.3)
|
24
|
+
concurrent-ruby (1.1.10)
|
25
|
+
crack (0.4.5)
|
26
|
+
rexml
|
27
|
+
deprecation (1.1.0)
|
28
|
+
activesupport
|
29
|
+
diff-lcs (1.5.0)
|
30
|
+
docile (1.4.0)
|
31
|
+
faraday (2.4.0)
|
32
|
+
faraday-net_http (~> 2.0)
|
33
|
+
ruby2_keywords (>= 0.0.4)
|
34
|
+
faraday-net_http (2.1.0)
|
35
|
+
faraday-retry (1.0.3)
|
36
|
+
hashdiff (1.0.1)
|
37
|
+
i18n (1.12.0)
|
38
|
+
concurrent-ruby (~> 1.0)
|
39
|
+
json (2.6.2)
|
40
|
+
mini_portile2 (2.8.0)
|
41
|
+
minitest (5.16.2)
|
42
|
+
nokogiri (1.13.8)
|
43
|
+
mini_portile2 (~> 2.8.0)
|
44
|
+
racc (~> 1.4)
|
45
|
+
parallel (1.22.1)
|
46
|
+
parser (3.1.2.0)
|
47
|
+
ast (~> 2.4.1)
|
48
|
+
public_suffix (4.0.7)
|
49
|
+
racc (1.6.0)
|
50
|
+
rainbow (3.1.1)
|
51
|
+
rake (13.0.6)
|
52
|
+
regexp_parser (2.5.0)
|
53
|
+
rexml (3.2.5)
|
54
|
+
rspec (3.11.0)
|
55
|
+
rspec-core (~> 3.11.0)
|
56
|
+
rspec-expectations (~> 3.11.0)
|
57
|
+
rspec-mocks (~> 3.11.0)
|
58
|
+
rspec-core (3.11.0)
|
59
|
+
rspec-support (~> 3.11.0)
|
60
|
+
rspec-expectations (3.11.0)
|
61
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
62
|
+
rspec-support (~> 3.11.0)
|
63
|
+
rspec-mocks (3.11.1)
|
64
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
65
|
+
rspec-support (~> 3.11.0)
|
66
|
+
rspec-support (3.11.0)
|
67
|
+
rspec_junit_formatter (0.5.1)
|
68
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
69
|
+
rubocop (1.32.0)
|
70
|
+
json (~> 2.3)
|
71
|
+
parallel (~> 1.10)
|
72
|
+
parser (>= 3.1.0.0)
|
73
|
+
rainbow (>= 2.2.2, < 4.0)
|
74
|
+
regexp_parser (>= 1.8, < 3.0)
|
75
|
+
rexml (>= 3.2.5, < 4.0)
|
76
|
+
rubocop-ast (>= 1.19.1, < 2.0)
|
77
|
+
ruby-progressbar (~> 1.7)
|
78
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
79
|
+
rubocop-ast (1.19.1)
|
80
|
+
parser (>= 3.1.1.0)
|
81
|
+
rubocop-rake (0.6.0)
|
82
|
+
rubocop (~> 1.0)
|
83
|
+
rubocop-rspec (2.12.1)
|
84
|
+
rubocop (~> 1.31)
|
85
|
+
ruby-progressbar (1.11.0)
|
86
|
+
ruby2_keywords (0.0.5)
|
87
|
+
simplecov (0.21.2)
|
88
|
+
docile (~> 1.1)
|
89
|
+
simplecov-html (~> 0.11)
|
90
|
+
simplecov_json_formatter (~> 0.1)
|
91
|
+
simplecov-html (0.12.3)
|
92
|
+
simplecov_json_formatter (0.1.4)
|
93
|
+
tzinfo (2.0.5)
|
94
|
+
concurrent-ruby (~> 1.0)
|
95
|
+
unicode-display_width (2.2.0)
|
96
|
+
webmock (3.14.0)
|
97
|
+
addressable (>= 2.8.0)
|
98
|
+
crack (>= 0.3.2)
|
99
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
100
|
+
webrick (1.7.0)
|
101
|
+
yard (0.9.28)
|
102
|
+
webrick (~> 1.7.0)
|
103
|
+
zeitwerk (2.6.0)
|
104
|
+
|
105
|
+
PLATFORMS
|
106
|
+
ruby
|
107
|
+
|
108
|
+
DEPENDENCIES
|
109
|
+
byebug
|
110
|
+
dor-workflow-client!
|
111
|
+
rake
|
112
|
+
rspec (~> 3.3)
|
113
|
+
rspec_junit_formatter
|
114
|
+
rubocop (~> 1.24)
|
115
|
+
rubocop-rake
|
116
|
+
rubocop-rspec (~> 2.1)
|
117
|
+
simplecov
|
118
|
+
webmock
|
119
|
+
yard
|
120
|
+
|
121
|
+
BUNDLED WITH
|
122
|
+
2.3.17
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ https://consul.stanford.edu/display/DOR/DOR+services#DORservices-initializeworkf
|
|
11
11
|
|
12
12
|
## Usage
|
13
13
|
|
14
|
-
|
14
|
+
Initialize a `Dor::Workflow::Client` object in your application configuration, i.e. in a bootup or startup method like:
|
15
15
|
|
16
16
|
```ruby
|
17
17
|
client = Dor::Workflow::Client.new(url: 'https://test-server.edu/workflow/')
|
data/dor-workflow-client.gemspec
CHANGED
@@ -14,20 +14,24 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.homepage = 'https://consul.stanford.edu/display/DOR/DOR+services#DORservices-initializeworkflow'
|
15
15
|
|
16
16
|
gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
|
-
gem.test_files = gem.files.grep(%r{^(spec)/})
|
18
17
|
gem.require_paths = ['lib']
|
18
|
+
gem.required_ruby_version = '>= 2.7'
|
19
19
|
|
20
20
|
gem.add_dependency 'activesupport', '>= 3.2.1', '< 8'
|
21
21
|
gem.add_dependency 'deprecation', '>= 0.99.0'
|
22
|
-
gem.add_dependency 'faraday', '
|
23
|
-
gem.add_dependency '
|
22
|
+
gem.add_dependency 'faraday', '~> 2.0'
|
23
|
+
gem.add_dependency 'faraday-retry', '~> 1.0'
|
24
|
+
|
24
25
|
gem.add_dependency 'nokogiri', '~> 1.6'
|
25
26
|
gem.add_dependency 'zeitwerk', '~> 2.1'
|
26
27
|
|
27
28
|
gem.add_development_dependency 'rake'
|
28
29
|
gem.add_development_dependency 'rspec', '~> 3.3'
|
29
|
-
gem.add_development_dependency 'rubocop', '~>
|
30
|
-
gem.add_development_dependency '
|
30
|
+
gem.add_development_dependency 'rubocop', '~> 1.24'
|
31
|
+
gem.add_development_dependency 'rubocop-rake'
|
32
|
+
gem.add_development_dependency 'rubocop-rspec', '~> 2.1'
|
33
|
+
gem.add_development_dependency 'simplecov'
|
31
34
|
gem.add_development_dependency 'webmock'
|
32
35
|
gem.add_development_dependency 'yard'
|
36
|
+
gem.metadata['rubygems_mfa_required'] = 'true'
|
33
37
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'faraday_middleware'
|
4
|
-
|
5
3
|
module Dor
|
6
4
|
module Workflow
|
7
5
|
class Client
|
@@ -17,11 +15,9 @@ module Dor
|
|
17
15
|
@logger = logger
|
18
16
|
end
|
19
17
|
|
20
|
-
# rubocop:disable Metrics/MethodLength
|
21
18
|
def build_connection
|
22
19
|
Faraday.new(url: url) do |faraday|
|
23
20
|
faraday.use Faraday::Response::RaiseError # raise exceptions on 40x, 50x responses
|
24
|
-
faraday.use FaradayMiddleware::FollowRedirects, limit: 3
|
25
21
|
faraday.options.params_encoder = Faraday::FlatParamsEncoder
|
26
22
|
if timeout
|
27
23
|
faraday.options.timeout = timeout
|
@@ -40,7 +36,6 @@ module Dor
|
|
40
36
|
faraday.adapter Faraday.default_adapter # Last middleware must be the adapter
|
41
37
|
end
|
42
38
|
end
|
43
|
-
# rubocop:enable Metrics/MethodLength
|
44
39
|
|
45
40
|
def user_agent
|
46
41
|
"dor-workflow-client #{VERSION}"
|
@@ -51,17 +46,17 @@ module Dor
|
|
51
46
|
attr_reader :logger, :timeout, :url
|
52
47
|
|
53
48
|
def retriable_methods
|
54
|
-
Faraday::
|
49
|
+
Faraday::Retry::Middleware::IDEMPOTENT_METHODS + [:post]
|
55
50
|
end
|
56
51
|
|
57
52
|
def retriable_exceptions
|
58
|
-
Faraday::
|
53
|
+
Faraday::Retry::Middleware::DEFAULT_EXCEPTIONS + [Faraday::ConnectionFailed]
|
59
54
|
end
|
60
55
|
|
61
56
|
def retry_block
|
62
57
|
lambda do |env, _opts, retries, exception|
|
63
58
|
logger.warn "retrying connection (#{retries} remaining) to #{env.url}: (#{exception.class}) " \
|
64
|
-
|
59
|
+
"#{exception.message} #{env.status}"
|
65
60
|
end
|
66
61
|
end
|
67
62
|
|
@@ -14,39 +14,12 @@ module Dor
|
|
14
14
|
# @param [String] repo The repository the object resides in. This parameter is deprecated
|
15
15
|
# @param [String] druid object id
|
16
16
|
# @param [String] milestone_name the name of the milestone being queried for
|
17
|
-
# @param [Number] version the version to query for
|
17
|
+
# @param [Number] version (nil) the version to query for
|
18
18
|
# @param [Boolean] active_only (false) if true, return only lifecycle steps for versions that have all processes complete
|
19
19
|
# @return [Time] when the milestone was achieved. Returns nil if the milestone does not exist
|
20
|
-
|
21
|
-
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
22
|
-
def lifecycle(*args)
|
23
|
-
case args.size
|
24
|
-
when 4
|
25
|
-
Deprecation.warn(self, 'you provided 4 args, but lifecycle now takes kwargs')
|
26
|
-
(repo, druid, milestone_name) = args[0..2]
|
27
|
-
version = args[3][:version]
|
28
|
-
active_only = args[3][:active_only] || false
|
29
|
-
when 3
|
30
|
-
Deprecation.warn(self, 'you provided 3 args, but lifecycle now takes kwargs')
|
31
|
-
(repo, druid, milestone_name) = args
|
32
|
-
version = nil
|
33
|
-
active_only = false
|
34
|
-
when 1
|
35
|
-
opts = args.first
|
36
|
-
repo = opts[:repo]
|
37
|
-
druid = opts[:druid]
|
38
|
-
milestone_name = opts[:milestone_name]
|
39
|
-
version = opts[:version]
|
40
|
-
active_only = opts[:active_only] || false
|
41
|
-
else
|
42
|
-
raise ArgumentError, 'wrong number of arguments, must be 1, or 3-5'
|
43
|
-
end
|
44
|
-
|
45
|
-
Deprecation.warn(self, 'passing the repo parameter to lifecycle is no longer necessary. This will raise an error in dor-workflow-client version 4') if repo
|
46
|
-
|
20
|
+
def lifecycle(druid:, milestone_name:, version: nil, active_only: false)
|
47
21
|
filter_milestone(query_lifecycle(druid, version: version, active_only: active_only), milestone_name)
|
48
22
|
end
|
49
|
-
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
50
23
|
|
51
24
|
# Returns the Date for a requested milestone ONLY for the current version.
|
52
25
|
# This is slow as the workflow server will query dor-services-app for the version.
|
@@ -55,57 +28,17 @@ module Dor
|
|
55
28
|
# @param [String] milestone_name the name of the milestone being queried for
|
56
29
|
# @param [Number] version the version to query for
|
57
30
|
# @return [Time] when the milestone was achieved. Returns nil if the milestone does not exis
|
58
|
-
|
59
|
-
# rubocop:disable Metrics/MethodLength
|
60
|
-
def active_lifecycle(*args)
|
61
|
-
case args.size
|
62
|
-
when 4
|
63
|
-
Deprecation.warn(self, 'you provided 4 args, but active_lifecycle now takes kwargs')
|
64
|
-
(repo, druid, milestone_name) = args[0..2]
|
65
|
-
version = args[3][:version]
|
66
|
-
when 3
|
67
|
-
Deprecation.warn(self, 'you provided 3 args, but active_lifecycle now takes kwargs')
|
68
|
-
(repo, druid, milestone_name) = args
|
69
|
-
version = nil
|
70
|
-
when 1
|
71
|
-
opts = args.first
|
72
|
-
repo = opts[:repo]
|
73
|
-
druid = opts[:druid]
|
74
|
-
milestone_name = opts[:milestone_name]
|
75
|
-
version = opts[:version]
|
76
|
-
else
|
77
|
-
raise ArgumentError, 'wrong number of arguments, must be 1, 3, or 4'
|
78
|
-
end
|
79
|
-
|
80
|
-
Deprecation.warn(self, 'passing the repo parameter to active_lifecycle is no longer necessary. This will raise an error in dor-workflow-client version 4') if repo
|
81
|
-
|
31
|
+
def active_lifecycle(druid:, milestone_name:, version:)
|
82
32
|
lifecycle(druid: druid, milestone_name: milestone_name, version: version, active_only: true)
|
83
33
|
end
|
84
|
-
# rubocop:enable Metrics/MethodLength
|
85
34
|
|
86
35
|
# @return [Array<Hash>]
|
87
|
-
|
88
|
-
def milestones(*args)
|
89
|
-
case args.size
|
90
|
-
when 2
|
91
|
-
Deprecation.warn(self, 'you provided 2 args, but active_lifecycle now takes kwargs')
|
92
|
-
(repo, druid) = args
|
93
|
-
when 1
|
94
|
-
opts = args.first
|
95
|
-
repo = opts[:repo]
|
96
|
-
druid = opts.fetch(:druid)
|
97
|
-
else
|
98
|
-
raise ArgumentError, 'wrong number of arguments, must be 1-2'
|
99
|
-
end
|
100
|
-
|
101
|
-
Deprecation.warn(self, 'passing the repo parameter to active_lifecycle is no longer necessary. This will raise an error in dor-workflow-client version 4') if repo
|
102
|
-
|
36
|
+
def milestones(druid:)
|
103
37
|
doc = query_lifecycle(druid, active_only: false)
|
104
38
|
doc.xpath('//lifecycle/milestone').collect do |node|
|
105
39
|
{ milestone: node.text, at: Time.parse(node['date']), version: node['version'] }
|
106
40
|
end
|
107
41
|
end
|
108
|
-
# rubocop:enable Metrics/MethodLength
|
109
42
|
|
110
43
|
private
|
111
44
|
|