Class: Tenable::Configuration

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

Overview

Holds and validates all configuration options for the Tenable client.

Configuration values can be passed directly or read from environment variables (TENABLE_ACCESS_KEY, TENABLE_SECRET_KEY).

Constant Summary collapse

DEFAULTS =
{
  base_url: 'https://cloud.tenable.com',
  timeout: 30,
  open_timeout: 10,
  max_retries: 3
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(access_key: nil, secret_key: nil, base_url: nil, timeout: nil, open_timeout: nil, max_retries: nil, logger: nil) ⇒ Configuration

Creates a new Configuration instance.

Parameters:

  • access_key (String, nil) (defaults to: nil)

    API access key (falls back to TENABLE_ACCESS_KEY env var)

  • secret_key (String, nil) (defaults to: nil)

    API secret key (falls back to TENABLE_SECRET_KEY env var)

  • base_url (String, nil) (defaults to: nil)

    API base URL (default: cloud.tenable.com)

  • timeout (Integer, nil) (defaults to: nil)

    request timeout in seconds (default: 30)

  • open_timeout (Integer, nil) (defaults to: nil)

    connection open timeout in seconds (default: 10)

  • max_retries (Integer, nil) (defaults to: nil)

    max retry attempts, 0-10 (default: 3)

  • logger (Logger, nil) (defaults to: nil)

    optional logger for request/response logging

Raises:

  • (ArgumentError)

    if credentials are missing, base_url is invalid, or numeric values are out of range



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

def initialize(access_key: nil, secret_key: nil, base_url: nil, timeout: nil, open_timeout: nil, max_retries: nil,
               logger: nil)
  @access_key = access_key || ENV.fetch('TENABLE_ACCESS_KEY', nil)
  @secret_key = secret_key || ENV.fetch('TENABLE_SECRET_KEY', nil)
  @base_url = base_url || DEFAULTS[:base_url]
  @timeout = timeout || DEFAULTS[:timeout]
  @open_timeout = open_timeout || DEFAULTS[:open_timeout]
  @max_retries = max_retries.nil? ? DEFAULTS[:max_retries] : max_retries
  @logger = logger

  validate!
  freeze
end

Instance Attribute Details

#access_keyString (readonly)

Returns the API access key.

Returns:

  • (String)

    the API access key



10
11
12
# File 'lib/tenable/configuration.rb', line 10

def access_key
  @access_key
end

#base_urlString (readonly)

Returns the API base URL.

Returns:

  • (String)

    the API base URL



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

def base_url
  @base_url
end

#loggerLogger? (readonly)

Returns optional logger instance.

Returns:

  • (Logger, nil)

    optional logger instance



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

def logger
  @logger
end

#max_retriesInteger (readonly)

Returns the maximum number of retry attempts.

Returns:

  • (Integer)

    the maximum number of retry attempts



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

def max_retries
  @max_retries
end

#open_timeoutInteger (readonly)

Returns the connection open timeout in seconds.

Returns:

  • (Integer)

    the connection open timeout in seconds



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

def open_timeout
  @open_timeout
end

#secret_keyString (readonly)

Returns the API secret key.

Returns:

  • (String)

    the API secret key



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

def secret_key
  @secret_key
end

#timeoutInteger (readonly)

Returns the request timeout in seconds.

Returns:

  • (Integer)

    the request timeout in seconds



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

def timeout
  @timeout
end