Sha256: d6471ca5376178fd5b71bd229f2aba0b56e55534e4e230f013c7d034f4cb8224

Contents?: true

Size: 933 Bytes

Versions: 8

Compression:

Stored size: 933 Bytes

Contents

# frozen_string_literal: true

module Doorkeeper
  module Request
    class << self
      def authorization_strategy(response_type)
        build_strategy_class(response_type)
      end

      def token_strategy(grant_type)
        raise Errors::MissingRequiredParameter, :grant_type if grant_type.blank?

        get_strategy(grant_type, token_grant_types)
      rescue NameError
        raise Errors::InvalidTokenStrategy
      end

      def get_strategy(grant_type, available)
        raise NameError unless available.include?(grant_type.to_s)

        build_strategy_class(grant_type)
      end

      private

      def token_grant_types
        Doorkeeper.configuration.token_grant_types
      end

      def build_strategy_class(grant_or_request_type)
        strategy_class_name = grant_or_request_type.to_s.tr(" ", "_").camelize
        "Doorkeeper::Request::#{strategy_class_name}".constantize
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
doorkeeper-5.2.6 lib/doorkeeper/request.rb
doorkeeper-5.2.5 lib/doorkeeper/request.rb
doorkeeper-5.2.4 lib/doorkeeper/request.rb
doorkeeper-5.2.3 lib/doorkeeper/request.rb
doorkeeper-5.2.2 lib/doorkeeper/request.rb
doorkeeper-5.2.1 lib/doorkeeper/request.rb
doorkeeper-5.2.0 lib/doorkeeper/request.rb
doorkeeper-5.2.0.rc3 lib/doorkeeper/request.rb