Sha256: 2dac8712e1f95e79ccdc8176ac5b8ca09e9a069a17eab7e971a43d77ca79d550

Contents?: true

Size: 1.29 KB

Versions: 5

Compression:

Stored size: 1.29 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
  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

5 entries across 5 versions & 1 rubygems

Version Path
wine_bouncer-0.3.1 lib/wine_bouncer/configuration.rb
wine_bouncer-0.3.0 lib/wine_bouncer/configuration.rb
wine_bouncer-0.2.2 lib/wine_bouncer/configuration.rb
wine_bouncer-0.2.1 lib/wine_bouncer/configuration.rb
wine_bouncer-0.2.0 lib/wine_bouncer/configuration.rb