Class: Dor::Services::Client::ObjectVersion

Inherits:
VersionedService show all
Defined in:
lib/dor/services/client/object_version.rb

Overview

API calls that are about versions

Instance Method Summary collapse

Constructor Details

#initialize(connection:, version:, object_identifier:) ⇒ ObjectVersion

Returns a new instance of ObjectVersion.

Parameters:

  • object_identifier (String)

    the pid for the object



9
10
11
12
# File 'lib/dor/services/client/object_version.rb', line 9

def initialize(connection:, version:, object_identifier:)
  super(connection: connection, version: version)
  @object_identifier = object_identifier
end

Instance Method Details

#close(**params) ⇒ String

Close current version for an object

Parameters:

  • params (Hash)

    optional params (see dor-services-app)

Returns:

  • (String)

    a message confirming successful closing

Raises:



72
73
74
75
76
77
78
79
80
81
# File 'lib/dor/services/client/object_version.rb', line 72

def close(**params)
  resp = connection.post do |req|
    req.url close_version_path
    req.headers['Content-Type'] = 'application/json'
    req.body = params.to_json if params.any?
  end
  return resp.body if resp.success?

  raise_exception_based_on_response!(resp)
end

#currentString

Get the current version for a DOR object. This comes from Dor::VersionMetadataDS

Returns:

  • (String)

    the version identifier

Raises:



18
19
20
21
22
23
24
25
# File 'lib/dor/services/client/object_version.rb', line 18

def current
  resp = connection.get do |req|
    req.url "#{object_path}/versions/current"
  end
  return resp.body if resp.success?

  raise_exception_based_on_response!(resp)
end

#open(**params) ⇒ String

Open new version for an object

Parameters:

  • params (Hash)

    optional params (see dor-services-app)

Returns:

  • (String)

    the current version

Raises:



60
61
62
63
64
65
# File 'lib/dor/services/client/object_version.rb', line 60

def open(**params)
  version = open_new_version_response(**params)
  raise MalformedResponse, "Version of #{object_identifier} is empty" if version.empty?

  version
end

#openable?(**params) ⇒ Boolean

Determines if a new version can be opened for a DOR object. rubocop:disable Metrics/MethodLength

Parameters:

  • params (Hash)

    optional params (see dor-services-app)

Returns:

  • (Boolean)

    true if a new version can be opened

Raises:



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/dor/services/client/object_version.rb', line 33

def openable?(**params)
  resp = connection.get do |req|
    # TODO: correct the typo below once
    #       https://github.com/sul-dlss/dor-services-app/issues/322 is
    #       merged and all running DSA instances have been deployed
    req.url "#{object_path}/versions/openeable"
    req.params = params
  end

  raise_exception_based_on_response!(resp) unless resp.success?

  if resp.body == 'true'
    true
  elsif resp.body == 'false'
    false
  else
    raise MalformedResponse, "Expected true or false, not #{resp.body}"
  end
end