Class: Postscale::Configuration

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

Constant Summary collapse

DEFAULT_BASE_URL =
"https://api.postscale.io"
DEFAULT_TIMEOUT =
30
DEFAULT_MAX_RETRIES =
3

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key:, base_url: DEFAULT_BASE_URL, timeout: DEFAULT_TIMEOUT, max_retries: DEFAULT_MAX_RETRIES, headers: nil, transport: nil, sleeper: nil) ⇒ Configuration

Returns a new instance of Configuration.



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/postscale/configuration.rb', line 11

def initialize(api_key:, base_url: DEFAULT_BASE_URL, timeout: DEFAULT_TIMEOUT, max_retries: DEFAULT_MAX_RETRIES, headers: nil, transport: nil, sleeper: nil)
  @api_key  = api_key
  @base_url = base_url.chomp("/")
  @timeout  = timeout
  @max_retries = max_retries
  @headers = headers || {}
  @transport = transport
  @sleeper = sleeper || Kernel.method(:sleep)

  validate!
end

Instance Attribute Details

#api_keyObject (readonly)

Returns the value of attribute api_key.



9
10
11
# File 'lib/postscale/configuration.rb', line 9

def api_key
  @api_key
end

#base_urlObject (readonly)

Returns the value of attribute base_url.



9
10
11
# File 'lib/postscale/configuration.rb', line 9

def base_url
  @base_url
end

#headersObject (readonly)

Returns the value of attribute headers.



9
10
11
# File 'lib/postscale/configuration.rb', line 9

def headers
  @headers
end

#max_retriesObject (readonly)

Returns the value of attribute max_retries.



9
10
11
# File 'lib/postscale/configuration.rb', line 9

def max_retries
  @max_retries
end

#sleeperObject (readonly)

Returns the value of attribute sleeper.



9
10
11
# File 'lib/postscale/configuration.rb', line 9

def sleeper
  @sleeper
end

#timeoutObject (readonly)

Returns the value of attribute timeout.



9
10
11
# File 'lib/postscale/configuration.rb', line 9

def timeout
  @timeout
end

#transportObject (readonly)

Returns the value of attribute transport.



9
10
11
# File 'lib/postscale/configuration.rb', line 9

def transport
  @transport
end

Instance Method Details

#live?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/postscale/configuration.rb', line 32

def live?
  @api_key.start_with?("ps_live_")
end

#test?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/postscale/configuration.rb', line 36

def test?
  @api_key.start_with?("ps_test_")
end

#validate!Object

Raises:



23
24
25
26
27
28
29
30
# File 'lib/postscale/configuration.rb', line 23

def validate!
  raise ConfigurationError, "API key is required" if @api_key.nil? || @api_key.strip.empty?

  raise ConfigurationError, "Timeout must be a positive number" unless @timeout.is_a?(Numeric) && @timeout.positive?
  unless @max_retries.is_a?(Integer) && @max_retries >= 0
    raise ConfigurationError, "max_retries must be a non-negative integer"
  end
end