Sha256: e79999a0dd72fd142be44926d0879e3944b8a9df3709a2af84ded30ed149ff56

Contents?: true

Size: 1.46 KB

Versions: 10

Compression:

Stored size: 1.46 KB

Contents

module Stackify

  class Configuration

    attr_accessor :api_key, :app_name, :app_location, :env, :log_level, :logger,
                  :proxy, :mode, :base_api_url

    attr_reader :errors, :send_interval, :flood_limit, :queue_max_size

    def initialize
      @base_api_url = 'https://api.stackify.com'
      @errors = []
      @api_key = ''
      @env = :production
      @flood_limit = 100
      @queue_max_size = 10000
      @send_interval = 60
      @log_level = :info
      @mode = MODES[:both]
      @logger = Logger.new(STDOUT)
      @logger.level = Logger::UNKNOWN
    end

    def is_valid?
      @errors = []
      validate_mode if validate_config_types
      @errors.empty?
    end

    private

    def validate_config_types
      validate_api_key &&
      validate_log_level &&
      validate_mode_type
    end

    def validate_mode_type
      return true if @mode.is_a? Symbol
      @errors << 'Mode should be a Symbol'
    end

    def validate_api_key
      return true if  @api_key.is_a?(String) && !@api_key.empty?
      @errors << 'API_KEY should be a String and not empty'
    end

    def validate_log_level
      return true if  [:debug, :warn, :info, :error, :fatal].include? @log_level
      @errors << "Log's level should has one of these values: [:debug, :warn, :info, :error, :fatal]"
    end

    def validate_mode
      return true if MODES.has_value? @mode
      @errors << 'Mode should be one of these values: [:both, :logging, :metrics]'
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
stackify-api-ruby-1.0.14 lib/stackify/utils/configuration.rb
stackify-api-ruby-1.0.13 lib/stackify/utils/configuration.rb
stackify-api-ruby-1.0.12 lib/stackify/utils/configuration.rb
stackify-api-ruby-1.0.11 lib/stackify/utils/configuration.rb
stackify-api-ruby-1.0.10 lib/stackify/utils/configuration.rb
stackify-api-ruby-1.0.9 lib/stackify/utils/configuration.rb
stackify-api-ruby-1.0.8 lib/stackify/utils/configuration.rb
stackify-api-ruby-1.0.7 lib/stackify/utils/configuration.rb
stackify-api-ruby-1.0.6 lib/stackify/utils/configuration.rb
stackify-api-ruby-1.0.4 lib/stackify/utils/configuration.rb