Class: ConvertSdk::ConfigValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/convert_sdk/config_validator.rb

Overview

The fail-fast validation rules for Config — the SDK's only raising surface.

ConfigValidator holds every presence/type rule for the configuration surface, extracted from Config so the surface class stays focused on naming-world translation and typed readers while the (uniform, table-like) validation rules live in one cohesive place. Every violation raises a stdlib ArgumentError naming the offending option and the expected type; there is no custom exception hierarchy anywhere in the SDK (Decision 3).

Rules:

  • presence — at least one of sdk_key / data must be present (FR6);
  • strings — sdk_key / sdk_key_secret / environment / config_endpoint / track_endpoint / negation must be String (nil accepted for the optional ones); data must be a Hash when present;
  • integers — max_traffic / hash_seed / event_batch_size;
  • intervals — data_refresh_interval / flush_interval are Numeric or nil (nil = timer-off); open_timeout / read_timeout are Numeric;
  • booleans — keys_case_sensitive / tracking (strict true/false);
  • log level — must be one of the LogLevel values.

Constant Summary collapse

LOG_LEVEL_VALUES =

The accepted LogLevel integer values (TRACE..SILENT).

[
  LogLevel::TRACE, LogLevel::DEBUG, LogLevel::INFO,
  LogLevel::WARN, LogLevel::ERROR, LogLevel::SILENT
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(values) ⇒ ConfigValidator

Returns a new instance of ConfigValidator.

Parameters:

  • values (Hash{Symbol=>Object})

    the merged option values, keyed by the public snake_case option names (the ConvertSdk::Config::DEFAULTS keys).



33
34
35
# File 'lib/convert_sdk/config_validator.rb', line 33

def initialize(values)
  @values = values
end

Instance Method Details

#validate!void

This method returns an undefined value.

Run every rule. The first violation raises; presence is checked first so a wholly-empty config reports the most useful fault.

Raises:

  • (ArgumentError)

    on any presence/type violation.



42
43
44
45
46
47
48
49
# File 'lib/convert_sdk/config_validator.rb', line 42

def validate!
  validate_presence!
  validate_strings!
  validate_integers!
  validate_intervals!
  validate_booleans!
  validate_log_level!
end