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:



69
70
71
72
73
74
75
76
77
78
# File 'lib/dor/services/client/object_version.rb', line 69

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:



57
58
59
60
61
62
# File 'lib/dor/services/client/object_version.rb', line 57

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
# File 'lib/dor/services/client/object_version.rb', line 33

def openable?(**params)
  resp = connection.get do |req|
    req.url "#{object_path}/versions/openable"
    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