Class: Ezid::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/ezid/client.rb

Overview

EZID client

Constant Summary collapse

VERSION =

ezid-client gem version (e.g., “0.8.0”)

File.read(File.expand_path("../../../VERSION", __FILE__)).chomp
API_VERSION =

EZID API version

"2"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Client

Returns a new instance of Client.



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/ezid/client.rb', line 47

def initialize(opts = {})
  @host = opts[:host] || config.host
  @port = (opts[:port] || config.port).to_i
  @use_ssl = opts[:use_ssl] || config.use_ssl
  @timeout = (opts[:timeout] || config.timeout).to_i
  @user = opts[:user] || config.user
  @password = opts[:password] || config.password
  if block_given?
    
    yield self
    logout
  end
end

Instance Attribute Details

#hostObject (readonly)



45
46
47
# File 'lib/ezid/client.rb', line 45

def host
  @host
end

#passwordObject (readonly)



45
46
47
# File 'lib/ezid/client.rb', line 45

def password
  @password
end

#portObject (readonly)



45
46
47
# File 'lib/ezid/client.rb', line 45

def port
  @port
end

#timeoutObject (readonly)



45
46
47
# File 'lib/ezid/client.rb', line 45

def timeout
  @timeout
end

#use_sslObject (readonly)



45
46
47
# File 'lib/ezid/client.rb', line 45

def use_ssl
  @use_ssl
end

#userObject (readonly)



45
46
47
# File 'lib/ezid/client.rb', line 45

def user
  @user
end

Class Method Details

.configObject

Configuration reader



28
29
30
# File 'lib/ezid/client.rb', line 28

def config
  @config ||= Configuration.new
end

.configure {|the| ... } ⇒ Object

Yields the configuration to a block

Yield Parameters:



34
35
36
# File 'lib/ezid/client.rb', line 34

def configure
  yield config
end

.versionString

Verbose version string

Returns:

  • (String)

    the version



40
41
42
# File 'lib/ezid/client.rb', line 40

def version
  "ezid-client #{VERSION} (EZID API Version #{API_VERSION})"
end

Instance Method Details

#batch_download(params = {}) ⇒ Object

Submit a batch download request

Parameters:

  • format (String)

    format of results - one of “anvl”, “csv”, “xml”

  • params (Hash) (defaults to: {})

    optional request parameters

See Also:



177
178
179
# File 'lib/ezid/client.rb', line 177

def batch_download(params={})
  execute BatchDownloadRequest, params
end

#configEzid::Configuration

The client configuration

Returns:



68
69
70
# File 'lib/ezid/client.rb', line 68

def config
  self.class.config
end

#connectionNet::HTTP

The Net::HTTP object used to connect to EZID

Returns:

  • (Net::HTTP)

    the connection



183
184
185
# File 'lib/ezid/client.rb', line 183

def connection
  @connection ||= build_connection
end

#create_identifier(identifier, metadata = nil) ⇒ Ezid::Response

Create an identifier (PUT an existing identifier)

Parameters:

  • identifier (String)

    the identifier string to create

  • metadata (String, Hash, Ezid::Metadata) (defaults to: nil)

    optional metadata to set

Returns:

Raises:

See Also:



120
121
122
# File 'lib/ezid/client.rb', line 120

def create_identifier(identifier, =nil)
  execute CreateIdentifierRequest, identifier, 
end

#delete_identifier(identifier) ⇒ Ezid::Response

Delete an identifier (only reserved identifier can be deleted)

Parameters:

  • identifier (String)

    the identifier to delete

Returns:

Raises:

See Also:



160
161
162
# File 'lib/ezid/client.rb', line 160

def delete_identifier(identifier)
  execute DeleteIdentifierRequest, identifier
end

#get_identifier_metadata(identifier) ⇒ Ezid::Response

Get the metadata for an identifier

Parameters:

  • identifier (String)

    the identifier to retrieve

Returns:

Raises:

See Also:



151
152
153
# File 'lib/ezid/client.rb', line 151

def (identifier)
  execute GetIdentifierMetadataRequest, identifier
end

#inspectObject



61
62
63
64
# File 'lib/ezid/client.rb', line 61

def inspect
  "#<#{self.class.name} connection=#{connection.inspect} " \
    "user=\"#{user}\" session=#{logged_in? ? 'OPEN' : 'CLOSED'}>"
end

#logged_in?true, false

Returns whether the client is logged in.

Returns:

  • (true, false)

    whether the client is logged in



110
111
112
# File 'lib/ezid/client.rb', line 110

def logged_in?
  session.open?
end

#loggerLogger

The client logger

Returns:

  • (Logger)

    the logger



74
75
76
# File 'lib/ezid/client.rb', line 74

def logger
  @logger ||= config.logger
end

#loginEzid::Client

Open a session

Returns:

Raises:



87
88
89
90
91
92
93
94
95
# File 'lib/ezid/client.rb', line 87

def 
  if logged_in?
    logger.info("Already logged in, skipping login request.")
  else
    response = execute LoginRequest
    session.open(response.cookie)
  end
  self
end

#logoutEzid::Client

Close the session

Returns:



99
100
101
102
103
104
105
106
107
# File 'lib/ezid/client.rb', line 99

def logout
  if logged_in?
    execute LogoutRequest
    session.close
  else
    logger.info("Not logged in, skipping logout request.")
  end
  self
end

#mint_identifier(shoulder = nil, metadata = nil) ⇒ Ezid::Response

Mint an identifier

Parameters:

  • shoulder (String) (defaults to: nil)

    the shoulder on which to mint a new identifier

  • metadata (String, Hash, Ezid::Metadata) (defaults to: nil)

    metadata to set

Returns:

Raises:

See Also:



130
131
132
133
134
# File 'lib/ezid/client.rb', line 130

def mint_identifier(shoulder=nil, =nil)
  shoulder ||= config.default_shoulder
  raise Error, "Shoulder missing -- cannot mint identifier." unless shoulder
  execute MintIdentifierRequest, shoulder, 
end

#modify_identifier(identifier, metadata) ⇒ Ezid::Response

Modify an identifier

Parameters:

  • identifier (String)

    the identifier to modify

  • metadata (String, Hash, Ezid::Metadata)

    metadata to set

Returns:

Raises:

See Also:



142
143
144
# File 'lib/ezid/client.rb', line 142

def modify_identifier(identifier, )
  execute ModifyIdentifierRequest, identifier, 
end

#server_status(*subsystems) ⇒ Ezid::StatusResponse

Get the EZID server status (and the status of one or more subsystems)

Parameters:

  • subsystems (Array)

Returns:

  • (Ezid::StatusResponse)

    the status response

Raises:

See Also:



169
170
171
# File 'lib/ezid/client.rb', line 169

def server_status(*subsystems)
  execute ServerStatusRequest, *subsystems
end

#sessionEzid::Session

The client session

Returns:



80
81
82
# File 'lib/ezid/client.rb', line 80

def session
  @session ||= Session.new
end