Class: Dor::Services::Client::Workspace

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

Overview

API calls that are about the DOR workspace

Constant Summary

Constants inherited from VersionedService

VersionedService::EXCEPTION_CLASS, VersionedService::JSON_API_MIME_TYPE

Instance Method Summary collapse

Methods inherited from VersionedService

#async_result, #with_querystring

Constructor Details

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

Returns a new instance of Workspace.

Parameters:

  • object_identifier (String)

    the pid for the object



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

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

Instance Method Details

#cleanup(workflow: nil, lane_id: nil) ⇒ String

Cleans up a workspace

Parameters:

  • workflow (String) (defaults to: nil)

    (nil) which workflow to callback to.

  • lane_id (String) (defaults to: nil)

    for prioritization (default or low)

Returns:

  • (String)

    the URL of the background job on dor-service-app

Raises:



40
41
42
43
44
45
46
47
# File 'lib/dor/services/client/workspace.rb', line 40

def cleanup(workflow: nil, lane_id: nil)
  resp = connection.delete do |req|
    req.url with_query_params(workspace_path, workflow, lane_id)
  end
  return resp.headers['Location'] if resp.success?

  raise_exception_based_on_response!(resp, object_identifier)
end

#create(source: nil, content: false, metadata: false) ⇒ String

Initializes a new workspace rubocop:disable Metrics/AbcSize

Parameters:

  • source (String) (defaults to: nil)

    the path to the object (optional)

  • content (Boolean) (defaults to: false)

    determines if the content directory should be created (defaults to false)

  • metadata (Boolean) (defaults to: false)

    determines if the metadata directory should be created (defaults to false)

Returns:

  • (String)

    the path to the directory created

Raises:



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/dor/services/client/workspace.rb', line 21

def create(source: nil, content: false, metadata: false)
  resp = connection.post do |req|
    req.url workspace_path
    req.params['source'] = source if source
    req.params['content'] = content
    req.params['metadata'] = 
  end
  return JSON.parse(resp.body)['path'] if resp.success?

  raise_exception_based_on_response!(resp, object_identifier) unless resp.success?
end

#reset(workflow: nil, lane_id: nil) ⇒ Object

After an object has been copied to preservation the workspace can be reset. This is called by the reset-workspace step of the accessionWF

Parameters:

  • workflow (String) (defaults to: nil)

    (nil) which workflow to callback to.

  • lane_id (String) (defaults to: nil)

    for prioritization (default or low)

Returns:

  • nil

Raises:



55
56
57
58
59
60
# File 'lib/dor/services/client/workspace.rb', line 55

def reset(workflow: nil, lane_id: nil)
  resp = connection.post do |req|
    req.url with_query_params("#{workspace_path}/reset", workflow, lane_id)
  end
  raise_exception_based_on_response!(resp, object_identifier) unless resp.success?
end