Sha256: 9442dac38b5edb8d7bc906f3809aa851d37c0030ccf0d9c9a5a8ff3694bcd57c

Contents?: true

Size: 1.41 KB

Versions: 7

Compression:

Stored size: 1.41 KB

Contents

require 'doorkeeper/request/authorization_code'
require 'doorkeeper/request/client_credentials'
require 'doorkeeper/request/code'
require 'doorkeeper/request/password'
require 'doorkeeper/request/refresh_token'
require 'doorkeeper/request/token'

module Doorkeeper
  module Request
    module_function

    def authorization_strategy(response_type)
      get_strategy response_type, authorization_response_types
    rescue NameError
      raise Errors::InvalidAuthorizationStrategy
    end

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

    def get_strategy(grant_or_request_type, available)
      fail Errors::MissingRequestStrategy unless grant_or_request_type.present?
      fail NameError unless available.include?(grant_or_request_type.to_s)
      strategy_class(grant_or_request_type)
    end

    def authorization_response_types
      Doorkeeper.configuration.authorization_response_types
    end
    private_class_method :authorization_response_types

    def token_grant_types
      Doorkeeper.configuration.token_grant_types
    end
    private_class_method :token_grant_types

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

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
doorkeeper-4.4.3 lib/doorkeeper/request.rb
doorkeeper-4.4.2 lib/doorkeeper/request.rb
doorkeeper-4.4.1 lib/doorkeeper/request.rb
doorkeeper-4.4.0 lib/doorkeeper/request.rb
doorkeeper-4.3.2 lib/doorkeeper/request.rb
doorkeeper-4.3.1 lib/doorkeeper/request.rb
doorkeeper-4.3.0 lib/doorkeeper/request.rb