Sha256: 89c898d217c599b3b8264974095ef78b36b02056ff07387fd39ec8941199b75d
Contents?: true
Size: 1.41 KB
Versions: 21
Compression:
Stored size: 1.41 KB
Contents
# frozen_string_literal: true module SdrClient module Deposit # Updates a resource (metadata) in SDR class UpdateResource DRO_PATH = '/v1/resources/%<id>s' def self.run(metadata:, logger:, connection:) new(metadata: metadata, logger: logger, connection: connection).run end # @param [Cocina::Models::DRO] metadata # @param [Hash<Symbol,String>] the result of the metadata call def initialize(metadata:, logger:, connection:) @metadata = metadata @logger = logger @connection = connection end # @param [Hash<Symbol,String>] the result of the metadata call # @return [String] job id for the background job result def run response = metadata_request UnexpectedResponse.call(response) unless response.status == 202 logger.info("Response from server: #{response.body}") JSON.parse(response.body)['jobId'] end private attr_reader :metadata, :logger, :connection def metadata_request json = metadata.to_json logger.debug("Starting update metadata: #{json}") connection.put(path(metadata), json, 'Content-Type' => 'application/json', 'X-Cocina-Models-Version' => Cocina::Models::VERSION) end def path(metadata) format(DRO_PATH, id: metadata.externalIdentifier) end end end end
Version data entries
21 entries across 21 versions & 1 rubygems