Sha256: 42ad1ba9eb38dd2f984808ec1bb99d18c4c5fe47eb9559e8717617401eac7c2b

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

require "ostruct"

module Authsignal
  class Configuration
        def self.config_option(name)
            define_method(name) do
                read_value(name)
            end

            define_method("#{name}=") do |value|
                set_value(name, value)
            end
        end
  
        config_option :api_secret_key
        config_option :api_url
        config_option :debug
        config_option :retry

        def initialize
            @config_values = {}
      
            # set default attribute values
            @defaults = OpenStruct.new({
                api_url: 'https://signal.authsignal.com/v1/',
                retry: false,
                debug: false
            })
        end

        def [](key)
            read_value(key)
        end
    
        def []=(key, value)
            set_value(key, value)
        end

        private
        def read_value(name)
            if @config_values.has_key?(name)
                @config_values[name]
            else
                @defaults.send(name)
            end
        end

        def set_value(name, value)
            @config_values[name] = value
        end
  end    
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
authsignal-ruby-5.0.0 lib/authsignal/configuration.rb