Class: SdrClient::RedesignedClient::Deposit

Inherits:
Object
  • Object
show all
Defined in:
lib/sdr_client/redesigned_client/deposit.rb

Overview

Deposit into the SDR API

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model:, accession:, basepath:, files: [], **options) ⇒ Deposit

Returns a new instance of Deposit.

Parameters:

  • model (Cocina::Model::RequestDRO)

    for depositing

  • accession (Boolean)

    should the accessionWF be started

  • basepath (String)

    filepath to which filepaths are relative

  • files (Array<String>) (defaults to: [])

    a list of relative filepaths to upload

  • options (Hash)

    optional parameters

Options Hash (**options):

  • assign_doi (Boolean)

    should a DOI be assigned to this item

  • priority (String)

    what processing priority should be used (‘low’, ‘default’)

  • grouping_strategy (String)

    what strategy will be used to group files

  • file_set_strategy (String)

    what strategy will be used to group file sets

  • request_builder (RequestBuilder)

    a request builder instance



21
22
23
24
25
26
27
# File 'lib/sdr_client/redesigned_client/deposit.rb', line 21

def initialize(model:, accession:, basepath:, files: [], **options)
  @model = model
  @accession = accession
  @basepath = basepath
  @files = files
  @options = options
end

Class Method Details

.deposit_modelObject



7
8
9
# File 'lib/sdr_client/redesigned_client/deposit.rb', line 7

def self.deposit_model(...)
  new(...).deposit_model
end

Instance Method Details

#deposit_modelObject

rubocop:disable Metrics/MethodLength, Metrics/AbcSize



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/sdr_client/redesigned_client/deposit.rb', line 29

def deposit_model # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
  check_files_exist!
  child_files_match! unless options[:request_builder]

   = UploadFilesMetadataBuilder.build(files: files, mime_types: mime_types, basepath: basepath)
  upload_responses = UploadFiles.upload(file_metadata: ,
                                        filepath_map: filepath_map)
  if options[:request_builder]
    @model = StructuralGrouper.group(
      request_builder: options[:request_builder],
      upload_responses: upload_responses,
      grouping_strategy: options[:grouping_strategy],
      file_set_strategy: options[:file_set_strategy]
    )
    child_files_match!
  end

  new_request_dro = UpdateDroWithFileIdentifiers.update(request_dro: model,
                                                        upload_responses: upload_responses)
  CreateResource.run(accession: accession,
                     priority: options[:priority],
                     assign_doi: options[:assign_doi],
                     metadata: new_request_dro)
end