Class: ResourceSpace::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/resourcespace/configuration.rb

Overview

Configuration class for ResourceSpace client

Examples:

config = ResourceSpace::Configuration.new
config.url = "https://your-resourcespace.com/api/"
config.user = "your_username"
config.private_key = "your_private_key"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Initialize a new configuration with default values



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/resourcespace/configuration.rb', line 46

def initialize
  @url = nil
  @user = nil
  @private_key = nil
  @timeout = 30
  @retries = 3
  @user_agent = "ResourceSpace Ruby Client #{ResourceSpace::VERSION}"
  @verify_ssl = true
  @auth_mode = "userkey"
  @default_headers = {}
  @debug = false
  @logger = nil
end

Instance Attribute Details

#auth_modeString

Returns authentication mode ('userkey', 'sessionkey', or 'native').

Returns:

  • (String)

    authentication mode ('userkey', 'sessionkey', or 'native')



34
35
36
# File 'lib/resourcespace/configuration.rb', line 34

def auth_mode
  @auth_mode
end

#debugBoolean

Returns whether to log API requests and responses (default: false).

Returns:

  • (Boolean)

    whether to log API requests and responses (default: false)



40
41
42
# File 'lib/resourcespace/configuration.rb', line 40

def debug
  @debug
end

#default_headersHash

Returns default headers to include with all requests.

Returns:

  • (Hash)

    default headers to include with all requests



37
38
39
# File 'lib/resourcespace/configuration.rb', line 37

def default_headers
  @default_headers
end

#loggerLogger

Returns logger instance for debugging.

Returns:

  • (Logger)

    logger instance for debugging



43
44
45
# File 'lib/resourcespace/configuration.rb', line 43

def logger
  @logger
end

#private_keyString

Returns the private API key for the user.

Returns:

  • (String)

    the private API key for the user



19
20
21
# File 'lib/resourcespace/configuration.rb', line 19

def private_key
  @private_key
end

#retriesInteger

Returns number of retry attempts for failed requests (default: 3).

Returns:

  • (Integer)

    number of retry attempts for failed requests (default: 3)



25
26
27
# File 'lib/resourcespace/configuration.rb', line 25

def retries
  @retries
end

#timeoutInteger

Returns request timeout in seconds (default: 30).

Returns:

  • (Integer)

    request timeout in seconds (default: 30)



22
23
24
# File 'lib/resourcespace/configuration.rb', line 22

def timeout
  @timeout
end

#urlString

Returns the ResourceSpace API URL (must end with /api/).

Returns:

  • (String)

    the ResourceSpace API URL (must end with /api/)



13
14
15
# File 'lib/resourcespace/configuration.rb', line 13

def url
  @url
end

#userString

Returns the ResourceSpace username.

Returns:

  • (String)

    the ResourceSpace username



16
17
18
# File 'lib/resourcespace/configuration.rb', line 16

def user
  @user
end

#user_agentString

Returns user agent string for requests.

Returns:

  • (String)

    user agent string for requests



28
29
30
# File 'lib/resourcespace/configuration.rb', line 28

def user_agent
  @user_agent
end

#verify_sslBoolean

Returns whether to verify SSL certificates (default: true).

Returns:

  • (Boolean)

    whether to verify SSL certificates (default: true)



31
32
33
# File 'lib/resourcespace/configuration.rb', line 31

def verify_ssl
  @verify_ssl
end

Instance Method Details

#dupConfiguration

Create a duplicate of this configuration

Returns:



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/resourcespace/configuration.rb', line 111

def dup
  new_config = Configuration.new
  new_config.url = url
  new_config.user = user
  new_config.private_key = private_key
  new_config.timeout = timeout
  new_config.retries = retries
  new_config.user_agent = user_agent
  new_config.verify_ssl = verify_ssl
  new_config.auth_mode = auth_mode
  new_config.default_headers = default_headers.dup
  new_config.debug = debug
  new_config.logger = logger
  new_config
end

#to_hHash

Convert configuration to a hash

Returns:

  • (Hash)

    configuration as a hash



93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/resourcespace/configuration.rb', line 93

def to_h
  {
    url: url,
    user: user,
    private_key: private_key ? "[REDACTED]" : nil,
    timeout: timeout,
    retries: retries,
    user_agent: user_agent,
    verify_ssl: verify_ssl,
    auth_mode: auth_mode,
    default_headers: default_headers,
    debug: debug
  }
end

#valid?Boolean

Check if configuration is valid without raising an error

Returns:

  • (Boolean)

    true if configuration is valid



83
84
85
86
87
88
# File 'lib/resourcespace/configuration.rb', line 83

def valid?
  validate!
  true
rescue ConfigurationError
  false
end

#validate!Boolean

Validate the configuration

Returns:

  • (Boolean)

    true if configuration is valid

Raises:



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/resourcespace/configuration.rb', line 64

def validate!
  errors = []

  errors << "URL is required" if url.nil? || url.empty?
  errors << "URL must end with /api/" if url && !url.end_with?("/api/")
  errors << "User is required" if user.nil? || user.empty?
  errors << "Private key is required" if private_key.nil? || private_key.empty?
  errors << "Timeout must be positive" if timeout && timeout <= 0
  errors << "Retries must be non-negative" if retries && retries < 0
  errors << "Auth mode must be userkey, sessionkey, or native" unless %w[userkey sessionkey native].include?(auth_mode)

  raise ConfigurationError, "Configuration errors: #{errors.join(', ')}" unless errors.empty?

  true
end