Sha256: 61b0c6a530eb205dfffbe2b396c6b011b9cc6a30579cb0a0ddfea58f0749faeb
Contents?: true
Size: 1.31 KB
Versions: 8
Compression:
Stored size: 1.31 KB
Contents
# frozen_string_literal: true module SdrClient class RedesignedClient # Updates a DRO so that the structural metadata references the uploaded file ids class UpdateDroWithFileIdentifiers # @param [Cocina::Model::RequestDRO] request_dro for depositing # @param [Array<DirectUploadResponse>] upload_responses the responses from uploading files # @return [Cocina::Models::RequestDRO] def self.update(request_dro:, upload_responses:) # Manipulating request_dro as hash since immutable structural = request_dro.to_h[:structural] return request_dro.new({}) unless structural signed_ids = signed_id_map(upload_responses) request_dro.new(structural: updated_structural(structural, signed_ids)) end def self.signed_id_map(upload_responses) upload_responses.to_h { |response| [response.filename, response.signed_id] } end private_class_method :signed_id_map def self.updated_structural(structural, signed_ids) structural[:contains].each do |file_set| file_set[:structural][:contains].each do |file| file[:externalIdentifier] = signed_ids[file[:filename]] if signed_ids.key?(file[:filename]) end end structural end private_class_method :updated_structural end end end
Version data entries
8 entries across 8 versions & 1 rubygems