Sha256: 99323e560353c4dd0140046176a9adfdda27c770a085f6abcd2d17885115bf07

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

module WineBouncer

  class << self
    attr_accessor :configuration
  end

  class Configuration

    attr_accessor :auth_strategy
    attr_accessor :defined_resource_owner

    def auth_strategy=(strategy)
      @auth_strategy= strategy
    end

    def auth_strategy
      @auth_strategy || :default
    end

    def require_strategies
      require "wine_bouncer/auth_strategies/#{auth_strategy}"
    end

    def define_resource_owner &block
      fail(ArgumentError, 'define_resource_owner expects a block in the configuration') unless block_given?
      @defined_resource_owner = block
    end

    def defined_resource_owner
      fail(Errors::UnconfiguredError, 'Please define define_resource_owner to configure the resource owner') unless @defined_resource_owner
      @defined_resource_owner
    end

    # when the block evaluates to true, WineBouncer should be disabled
    # if no block is provided, WineBouncer is always enabled
    def disable(&block)
      @disable_block = block
    end

    def disable_block
      @disable_block || ->() { false }
    end
  end

   def self.configuration
    @configuration || fail(Errors::UnconfiguredError.new)
  end

  def self.configuration=(config)
    @configuration= config
    @configuration.require_strategies
  end

  ###
  # Configure block.
  # Requires all strategy specific files.
  ###
  def self.configure
    yield(config)
    config.require_strategies
    config
  end

  private

  ###
  # Returns a new configuration or existing one.
  ###
  def self.config
    @configuration ||= Configuration.new
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
wine_bouncer-0.5.0 lib/wine_bouncer/configuration.rb
wine_bouncer-0.4.0 lib/wine_bouncer/configuration.rb