class SamsaraSDK::Config

Samsara SDK default configuration and request constants.

Constants

API_PATH

Samsara Ingestion API endpoint

PUBLISHED_TIMESTAMP_HEADER

Samsara specific HTTP Header

Public Class Methods

get() click to toggle source

Get configuration values.

@return [Hash] Configuration values.

# File lib/samsara_sdk/config.rb, line 72
def get
  @values
end
setup!(input_config) click to toggle source

Set up configuration. Merges given config with defaults and validates the result.

@param input_config [Hash] Input configuration options. @raise [SamsaraSDK::ConfigValidationError] if any config option is incorrect.

# File lib/samsara_sdk/config.rb, line 64
def setup!(input_config)
  @values = @defaults.merge input_config
  validate @values
end
timestamp() click to toggle source

Generates current timestamp.

@return [Integer] timestamp in milliseconds.

# File lib/samsara_sdk/config.rb, line 79
def timestamp
  (Time.now.to_f.round(3) * 1000).to_i
end

Private Class Methods

valid_type?(key, value) click to toggle source

Check value type corresponds to allowed type for particular config key.

@param key [Symbol] Configuration key. @param value [Object] Configuration value. @return [Boolean]

# File lib/samsara_sdk/config.rb, line 106
def valid_type?(key, value)
  if [TrueClass, FalseClass].include? @defaults[key].class
    return [TrueClass, FalseClass].include? value.class
  end
  value.is_a? @defaults[key].class
end
validate(config) click to toggle source

Validates given configuration values.

@param config [Hash] Configuration values. @raise [SamsaraSDK::ConfigValidationError] if any config option is incorrect.

# File lib/samsara_sdk/config.rb, line 89
def validate(config)
  config.each do |k, v|
    raise ConfigValidationError, "#{k} should be of #{@defaults[k].class}" unless valid_type?(k, v)
  end

  raise ConfigValidationError, 'URL for Ingestion API should be specified.' if config[:url] == ''
  raise ConfigValidationError, 'Incorrect compression option.' unless [:gzip, :none].include? config[:compression]
  raise ConfigValidationError, 'Invalid interval time for Samsara client.' if config[:publish_interval_ms] <= 0
  raise ConfigValidationError, 'max_buffer_size can not be less than min_buffer_size.' if
      config[:max_buffer_size] < config[:min_buffer_size]
end