class Doorkeeper::OAuth::BaseRequest

def after_successful_response

def after_successful_response
  Doorkeeper.configuration.after_successful_strategy_response.call(self, @response)
end

def authorize

def authorize
  validate
  if valid?
    before_successful_response
    @response = TokenResponse.new(access_token)
    after_successful_response
    @response
  elsif error == :invalid_request
    @response = InvalidRequestResponse.from_request(self)
  else
    @response = ErrorResponse.from_request(self)
  end
end

def before_successful_response

def before_successful_response
  Doorkeeper.configuration.before_successful_strategy_response.call(self)
end

def build_scopes

def build_scopes
  if @original_scopes.present?
    OAuth::Scopes.from_string(@original_scopes)
  else
    client_scopes = @client.try(:scopes)
    return default_scopes if client_scopes.blank?
    default_scopes & @client.scopes
  end
end

def default_scopes

def default_scopes
  server.default_scopes
end

def find_or_create_access_token(client, resource_owner_id, scopes, server)

def find_or_create_access_token(client, resource_owner_id, scopes, server)
  context = Authorization::Token.build_context(client, grant_type, scopes)
  @access_token = AccessToken.find_or_create_for(
    client,
    resource_owner_id,
    scopes,
    Authorization::Token.access_token_expires_in(server, context),
    Authorization::Token.refresh_token_enabled?(server, context)
  )
end

def scopes

def scopes
  @scopes ||= build_scopes
end

def valid?

def valid?
  error.nil?
end