sdr-client 0.64.1 → 0.67.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cd859197eb3ee01e8321bf4af17704bb819a8b24076a1d53db9ee932325fff4d
4
- data.tar.gz: f04b6332fb5abff8170c8089c1c405a1c3c00e9acfa98ea9e1f41c59150dc934
3
+ metadata.gz: e08558986780410f688c1c5f19396dd7a55065281ec47e5e1c2f4f5a09d64618
4
+ data.tar.gz: 0a6f0a072b0543de5ba731552340d52b8bd2dcc9414be96ee69f5709aa496471
5
5
  SHA512:
6
- metadata.gz: f30c067e5f5888a41d49118197e834f4d0760aa719337bfb06327f23075c28d718ff0215e2623ec0e02e1073736e9139c0012287e51e805f7441c7969a421734
7
- data.tar.gz: 84ff51df6cf45d901a4dbabf57f2a6e078472b9a3702f7b4e35097d7e72a0ae0d0f8fa8689006a0adf2facedb7df086a3c4726cfb2d2372693318625544c271d
6
+ metadata.gz: 5e4f1efe21eaf7938d0a6533d5de35f5a31bbd470a14120036c6991ebdaf3d17885e958861191e49c9f4548d7e61be840e2e94fd1957594515ff19af439b5f4c
7
+ data.tar.gz: 648509578100d2728172a1644ba8dcc3e60e4489cc82860fca33264d9bbb037e2f8b6699a1b351f87eb87697c330899b19190746c16c611dc05ffeb1aac8f7a4
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config --auto-gen-only-exclude`
3
- # on 2022-01-14 01:45:54 UTC using RuboCop version 1.24.1.
3
+ # on 2022-02-15 02:08:38 UTC using RuboCop version 1.25.1.
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
@@ -18,6 +18,14 @@ Lint/NoReturnInBeginEndBlocks:
18
18
  Exclude:
19
19
  - 'lib/sdr_client/deposit/model_process.rb'
20
20
 
21
+ # Offense count: 2
22
+ # Cop supports --auto-correct.
23
+ # Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods.
24
+ Lint/UnusedMethodArgument:
25
+ Exclude:
26
+ - 'lib/sdr_client/deposit/file_type_file_set_strategy.rb'
27
+ - 'lib/sdr_client/deposit/image_file_set_strategy.rb'
28
+
21
29
  # Offense count: 10
22
30
  # Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods.
23
31
  Metrics/MethodLength:
@@ -52,16 +60,17 @@ RSpec/MessageSpies:
52
60
  Exclude:
53
61
  - 'spec/sdr_client/deposit_spec.rb'
54
62
 
55
- # Offense count: 9
63
+ # Offense count: 10
56
64
  # Configuration parameters: Max.
57
65
  RSpec/MultipleExpectations:
58
66
  Exclude:
59
67
  - 'spec/sdr_client/connection_spec.rb'
68
+ - 'spec/sdr_client/deposit/metadata_builder_spec.rb'
60
69
  - 'spec/sdr_client/deposit_spec.rb'
61
70
  - 'spec/sdr_client/login_spec.rb'
62
71
  - 'spec/sdr_client/model_deposit_spec.rb'
63
72
 
64
- # Offense count: 21
73
+ # Offense count: 22
65
74
  # Configuration parameters: AllowSubject, Max.
66
75
  RSpec/MultipleMemoizedHelpers:
67
76
  Exclude:
@@ -81,10 +90,11 @@ RSpec/NamedSubject:
81
90
  - 'spec/sdr_client/deposit/process_spec.rb'
82
91
  - 'spec/sdr_client/login_spec.rb'
83
92
 
84
- # Offense count: 11
93
+ # Offense count: 12
85
94
  # Configuration parameters: Max.
86
95
  RSpec/NestedGroups:
87
96
  Exclude:
97
+ - 'spec/sdr_client/deposit/metadata_builder_spec.rb'
88
98
  - 'spec/sdr_client/deposit/model_process_spec.rb'
89
99
  - 'spec/sdr_client/deposit/process_spec.rb'
90
100
  - 'spec/sdr_client/login_spec.rb'
@@ -97,14 +107,14 @@ Style/KeywordParametersOrder:
97
107
  - 'lib/sdr_client/deposit/request.rb'
98
108
 
99
109
  # Offense count: 2
100
- # Cop supports --auto-correct.
110
+ # Cop supports --auto-correct-all.
101
111
  # Configuration parameters: Mode.
102
112
  Style/StringConcatenation:
103
113
  Exclude:
104
114
  - 'lib/sdr_client/deposit/create_resource.rb'
105
115
  - 'spec/sdr_client/deposit_spec.rb'
106
116
 
107
- # Offense count: 19
117
+ # Offense count: 16
108
118
  # Cop supports --auto-correct.
109
119
  # Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
110
120
  # URISchemes: http, https
@@ -8,8 +8,10 @@ module SdrClient
8
8
  # @param [Array] uploads
9
9
  # @param [Hash<String,Hash<String,String>>] uploads_metadata the file level metadata
10
10
  # @param [Array] files
11
- def initialize(label:, uploads: [], uploads_metadata: {}, files: [])
11
+ # @param [Class] type_strategy (FileTypeFileSetStrategy) a class that helps us determine how to type the fileset
12
+ def initialize(label:, uploads: [], uploads_metadata: {}, files: [], type_strategy: FileTypeFileSetStrategy)
12
13
  @label = label
14
+ @type_strategy = type_strategy
13
15
  @files = if uploads.empty?
14
16
  files
15
17
  else
@@ -21,7 +23,7 @@ module SdrClient
21
23
 
22
24
  def as_json
23
25
  {
24
- type: 'http://cocina.sul.stanford.edu/models/resources/file.jsonld',
26
+ type: type_strategy.run(files: files),
25
27
  label: label,
26
28
  structural: {
27
29
  contains: files.map(&:as_json)
@@ -32,7 +34,7 @@ module SdrClient
32
34
 
33
35
  private
34
36
 
35
- attr_reader :files, :label
37
+ attr_reader :files, :label, :type_strategy
36
38
 
37
39
  # This creates the metadata for each file and symbolizes the keys
38
40
  # @return [Hash<Symbol,String>]
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SdrClient
4
+ module Deposit
5
+ # This strategy is for building the type of a fileset
6
+ class FileTypeFileSetStrategy
7
+ # @param [Array<SdrClient::Deposit::Files>] files the files that are part of this strategy
8
+ # @return [String] The URI that represents the type of file_set
9
+ def self.run(files: [])
10
+ Cocina::Models::Vocab::Resources.file
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SdrClient
4
+ module Deposit
5
+ # This strategy is for building the type of a fileset
6
+ class ImageFileSetStrategy
7
+ # @param [Array<SdrClient::Deposit::Files>] files the files that are part of this strategy
8
+ # @return [String] The URI that represents the type of file_set
9
+ def self.run(files: [])
10
+ Cocina::Models::Vocab::Resources.image
11
+ end
12
+ end
13
+ end
14
+ end
@@ -10,10 +10,12 @@ module SdrClient
10
10
  # @param [Class] grouping_strategy class whose run method groups an array of uploads
11
11
  # Additional metadata includes access, preserve, shelve, publish, md5, sha1
12
12
  # @param [Logger] logger the logger to use
13
- def initialize(metadata:, grouping_strategy:, logger:)
13
+ # @param [Class] file_set_type_strategy class whose run method determines file_set type
14
+ def initialize(metadata:, grouping_strategy:, logger:, file_set_type_strategy: FileTypeFileSetStrategy)
14
15
  @metadata = metadata
15
16
  @logger = logger
16
17
  @grouping_strategy = grouping_strategy
18
+ @file_set_type_strategy = file_set_type_strategy
17
19
  end
18
20
 
19
21
  # @param [UploadFiles] upload_responses the uploaded file information
@@ -34,7 +36,8 @@ module SdrClient
34
36
  grouped_uploads.map.with_index(1) do |upload_group, i|
35
37
  FileSet.new(uploads: upload_group,
36
38
  uploads_metadata: metadata_group(upload_group),
37
- label: label(i))
39
+ label: label(i),
40
+ type_strategy: @file_set_type_strategy)
38
41
  end
39
42
  end
40
43
 
@@ -10,6 +10,7 @@ module SdrClient
10
10
  # @param [String] connection the server connection to use
11
11
  # @param [Boolean] accession should the accessionWF be started
12
12
  # @param [Class] grouping_strategy class whose run method groups an array of uploads
13
+ # @param [Class] file_set_type_strategy class whose run method determines file_set type
13
14
  # @param [Array<String>] files a list of file names to upload
14
15
  # @param [Boolean] assign_doi should a DOI be assigned to this item
15
16
  # @param [Logger] logger the logger to use
@@ -19,6 +20,7 @@ module SdrClient
19
20
  connection:,
20
21
  accession:,
21
22
  grouping_strategy: SingleFileGroupingStrategy,
23
+ file_set_type_strategy: FileTypeFileSetStrategy,
22
24
  files: [],
23
25
  assign_doi: false,
24
26
  logger: Logger.new($stdout))
@@ -27,6 +29,7 @@ module SdrClient
27
29
  @metadata = metadata
28
30
  @logger = logger
29
31
  @grouping_strategy = grouping_strategy
32
+ @file_set_type_strategy = file_set_type_strategy
30
33
  @accession = accession
31
34
  @assign_doi = assign_doi
32
35
  end
@@ -43,6 +46,7 @@ module SdrClient
43
46
  connection: connection)
44
47
  metadata_builder = MetadataBuilder.new(metadata: metadata,
45
48
  grouping_strategy: grouping_strategy,
49
+ file_set_type_strategy: file_set_type_strategy,
46
50
  logger: logger)
47
51
  request = metadata_builder.with_uploads(upload_responses)
48
52
  model = Cocina::Models.build_request(request.as_json.with_indifferent_access)
@@ -56,7 +60,7 @@ module SdrClient
56
60
 
57
61
  private
58
62
 
59
- attr_reader :metadata, :files, :connection, :logger, :grouping_strategy
63
+ attr_reader :metadata, :files, :connection, :logger, :grouping_strategy, :file_set_type_strategy
60
64
 
61
65
  def check_files_exist
62
66
  logger.info('checking to see if files exist')
@@ -28,6 +28,7 @@ module SdrClient
28
28
  files_metadata: {},
29
29
  accession: false,
30
30
  grouping_strategy: SingleFileGroupingStrategy,
31
+ file_set_type_strategy: FileTypeFileSetStrategy,
31
32
  logger: Logger.new($stdout))
32
33
  augmented_metadata = FileMetadataBuilder.build(files: files, files_metadata: files_metadata)
33
34
  metadata = Request.new(label: label,
@@ -48,6 +49,7 @@ module SdrClient
48
49
  connection = Connection.new(url: url)
49
50
  Process.new(metadata: metadata, connection: connection, files: files,
50
51
  grouping_strategy: grouping_strategy,
52
+ file_set_type_strategy: file_set_type_strategy,
51
53
  accession: accession,
52
54
  logger: logger).run
53
55
  end
@@ -73,6 +75,8 @@ require 'json'
73
75
  require 'sdr_client/deposit/create_resource'
74
76
  require 'sdr_client/deposit/single_file_grouping_strategy'
75
77
  require 'sdr_client/deposit/matching_file_grouping_strategy'
78
+ require 'sdr_client/deposit/file_type_file_set_strategy'
79
+ require 'sdr_client/deposit/image_file_set_strategy'
76
80
  require 'sdr_client/deposit/files/direct_upload_request'
77
81
  require 'sdr_client/deposit/files/direct_upload_response'
78
82
  require 'sdr_client/deposit/file'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SdrClient
4
- VERSION = '0.64.1'
4
+ VERSION = '0.67.1'
5
5
  end
data/sdr-client.gemspec CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ['lib']
29
29
 
30
30
  spec.add_dependency 'activesupport'
31
- spec.add_dependency 'cocina-models', '~> 0.63.1'
31
+ spec.add_dependency 'cocina-models', '~> 0.65.0'
32
32
  spec.add_dependency 'dry-monads'
33
33
  spec.add_dependency 'faraday', '>= 0.16'
34
34
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sdr-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.64.1
4
+ version: 0.67.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-20 00:00:00.000000000 Z
11
+ date: 2022-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.63.1
33
+ version: 0.65.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.63.1
40
+ version: 0.65.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: dry-monads
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -214,8 +214,10 @@ files:
214
214
  - lib/sdr_client/deposit/file_metadata_builder_operations/mime_type.rb
215
215
  - lib/sdr_client/deposit/file_metadata_builder_operations/sha1.rb
216
216
  - lib/sdr_client/deposit/file_set.rb
217
+ - lib/sdr_client/deposit/file_type_file_set_strategy.rb
217
218
  - lib/sdr_client/deposit/files/direct_upload_request.rb
218
219
  - lib/sdr_client/deposit/files/direct_upload_response.rb
220
+ - lib/sdr_client/deposit/image_file_set_strategy.rb
219
221
  - lib/sdr_client/deposit/matching_file_grouping_strategy.rb
220
222
  - lib/sdr_client/deposit/metadata_builder.rb
221
223
  - lib/sdr_client/deposit/model_process.rb