Class: Dor::Services::Client

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/dor/services/client.rb,
lib/dor/services/client/sdr.rb,
lib/dor/services/client/files.rb,
lib/dor/services/client/object.rb,
lib/dor/services/client/objects.rb,
lib/dor/services/client/version.rb,
lib/dor/services/client/metadata.rb,
lib/dor/services/client/workflow.rb,
lib/dor/services/client/workflows.rb,
lib/dor/services/client/workspace.rb,
lib/dor/services/client/release_tags.rb,
lib/dor/services/client/object_version.rb,
lib/dor/services/client/versioned_service.rb,
lib/dor/services/client/error_faraday_middleware.rb

Defined Under Namespace

Classes: ConnectionFailed, Error, ErrorFaradayMiddleware, Files, MalformedResponse, Metadata, NotFoundResponse, Object, ObjectVersion, Objects, ReleaseTags, SDR, UnexpectedResponse, VersionedService, Workflow, Workflows, Workspace

Constant Summary collapse

DEFAULT_VERSION =
'v1'
VERSION =
'1.10.0'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#connection=(value) ⇒ Object

Sets the attribute connection

Parameters:

  • value

    the value to set the attribute connection to.



94
95
96
# File 'lib/dor/services/client.rb', line 94

def connection=(value)
  @connection = value
end

#password=(value) ⇒ Object

Sets the attribute password

Parameters:

  • value

    the value to set the attribute password to.



94
95
96
# File 'lib/dor/services/client.rb', line 94

def password=(value)
  @password = value
end

#token=(value) ⇒ Object

Sets the attribute token

Parameters:

  • value

    the value to set the attribute token to.



94
95
96
# File 'lib/dor/services/client.rb', line 94

def token=(value)
  @token = value
end

#token_header=(value) ⇒ Object

Sets the attribute token_header

Parameters:

  • value

    the value to set the attribute token_header to.



94
95
96
# File 'lib/dor/services/client.rb', line 94

def token_header=(value)
  @token_header = value
end

#url=(value) ⇒ Object

Sets the attribute url

Parameters:

  • value

    the value to set the attribute url to.



94
95
96
# File 'lib/dor/services/client.rb', line 94

def url=(value)
  @url = value
end

#username=(value) ⇒ Object

Sets the attribute username

Parameters:

  • value

    the value to set the attribute username to.



94
95
96
# File 'lib/dor/services/client.rb', line 94

def username=(value)
  @username = value
end

Class Method Details

.configure(url:, username: nil, password: nil, token: nil, token_header: 'Authorization') ⇒ Object

Parameters:

  • url (String)
  • username (String) (defaults to: nil)
  • password (String) (defaults to: nil)
  • token (String) (defaults to: nil)

    a bearer token for HTTP auth

  • token_header (String) (defaults to: 'Authorization')

    (‘Authorization’) set this to something if you are also using basic auth, or the headers will collide



78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/dor/services/client.rb', line 78

def configure(url:, username: nil, password: nil, token: nil, token_header: 'Authorization')
  instance.url = url
  instance.username = username
  instance.password = password
  instance.token = token
  instance.token_header = token_header

  # Force connection to be re-established when `.configure` is called
  instance.connection = nil

  self
end

Instance Method Details

#object(object_identifier) ⇒ Dor::Services::Client::Object

Returns an instance of the ‘Client::Object` class.

Parameters:

  • object_identifier (String)

    the pid for the object

Returns:

Raises:

  • (ArgumentError)

    when ‘object_identifier` is `nil`



51
52
53
54
55
56
57
58
59
60
# File 'lib/dor/services/client.rb', line 51

def object(object_identifier)
  raise ArgumentError, '`object_identifier` argument cannot be `nil` in call to `#object(object_identifier)' if object_identifier.nil?

  # Return memoized object instance if object identifier value is the same
  # This allows us to test the client more easily in downstream codebases,
  # opening up stubbing without requiring `any_instance_of`
  return @object if @object&.object_identifier == object_identifier

  @object = Object.new(connection: connection, version: DEFAULT_VERSION, object_identifier: object_identifier)
end

#objectsDor::Services::Client::Objects

Returns an instance of the ‘Client::Objects` class.

Returns:



63
64
65
# File 'lib/dor/services/client.rb', line 63

def objects
  @objects ||= Objects.new(connection: connection, version: DEFAULT_VERSION)
end

#workflowsObject



67
68
69
# File 'lib/dor/services/client.rb', line 67

def workflows
  @workflows ||= Workflows.new(connection: connection, version: DEFAULT_VERSION)
end