Sha256: 928c600304620e2bb4e45aef1c51d3bb95e292c3918901a0a0331fe0068361b4

Contents?: true

Size: 1.76 KB

Versions: 4

Compression:

Stored size: 1.76 KB

Contents

module Capcoauth
  class MissingConfiguration < StandardError
    def initialize
      super 'Capcoauth configuration is missing.  Please ensure you have an initializer in config/initializers/capcoauth.rb'
    end
  end

  def self.configure(&block)
    @config = Config::Builder.new(&block).build
  end

  def self.configuration
    @config || (fail MissingConfiguration.new)
  end

  class Config
    attr_reader :client_id
    attr_reader :client_secret
    attr_reader :logger
    attr_accessor :using_routes

    class Builder
      def initialize(&block)
        @config = Config.new
        instance_eval(&block)
      end

      def build
        @config
      end

      def client_id(client_id)
        @config.instance_variable_set('@client_id', client_id)
      end

      def client_secret(client_secret)
        @config.instance_variable_set('@client_secret', client_secret)
      end

      def logger(logger)
        @config.instance_variable_set('@logger', logger)
      end
    end

    module Option
      def option(name, options = {})
        attribute = options[:as] || name

        Builder.instance_eval do
          define_method name do |*args, &block|
            value = block ? block : args.first

            @config.instance_variable_set(:"@#{attribute}", value)
          end
        end

        define_method attribute do |*args|
          if instance_variable_defined?(:"@#{attribute}")
            instance_variable_get(:"@#{attribute}")
          else
            options[:default]
          end
        end

        public attribute
      end

      def extended(base)
        base.send(:private, :option)
      end
    end

    extend Option

    option :token_verify_ttl, default: 10
    option :capcoauth_url, default: 'https://capcoauth.capco.com'
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
capcoauth-0.2.3 lib/capcoauth/config.rb
capcoauth-0.2.2 lib/capcoauth/config.rb
capcoauth-0.2.1 lib/capcoauth/config.rb
capcoauth-0.2.0 lib/capcoauth/config.rb