Sha256: a509dcdbb3c62b4968b0b89a801233c02d8b2285711f7e129867c03be46557a2

Contents?: true

Size: 1.36 KB

Versions: 6

Compression:

Stored size: 1.36 KB

Contents

module Ninsho
  module OmniAuth
    class StrategyNotFound < NameError
      def initialize(strategy)
        @strategy = strategy
        super("Could not find a strategy with name `#{strategy}'." )
      end
    end

    # Responsible for setting upt the configuration for omniauth
    # providers and mount it into ninsho
    class Config
      attr_accessor :strategy
      attr_reader :args, :options, :provider, :strategy_name

      def initialize(provider, args)
        @provider       = provider
        @args           = args
        @options        = @args.last.is_a?(Hash) ? @args.last : {}
        @strategy       = nil
        @strategy_name  = options[:name] || @provider
        @strategy_class = options.delete(:strategy_class)
      end

      def strategy_class
        @strategy_class ||= find_strategy || autoload_strategy
      end

      def find_strategy
        ::OmniAuth.strategies.find do |strategy_class|
          strategy_class.to_s =~ /#{::OmniAuth::Utils.camelize(strategy_name)}$/ ||
          strategy_class.default_options[:name] == strategy_name
        end
      end

      def autoload_strategy
        name = ::OmniAuth::Utils.camelize(provider.to_s)
        if ::OmniAuth::Strategies.const_defined?(name)
          ::OmniAuth::Strategies.const_get(name)
        else
          raise StrategyNotFound, name
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ninsho-0.1.3 lib/ninsho/omniauth/config.rb
ninsho-0.1.2 lib/ninsho/omniauth/config.rb
ninsho-0.1.1 lib/ninsho/omniauth/config.rb
ninsho-0.1.0 lib/ninsho/omniauth/config.rb
ninsho-0.0.3 lib/ninsho/omniauth/config.rb
ninsho-0.0.2 lib/ninsho/omniauth/config.rb