cartodb/lib/carto/oauth_provider/errors.rb

80 lines
2.1 KiB
Ruby
Raw Normal View History

2020-06-15 10:58:47 +08:00
module Carto
module OauthProvider
module Errors
class BaseError < RuntimeError
def initialize(code, description = nil, uri = nil)
@code = code
@description = description
@uri = uri
end
def parameters
params = { error: @code }
params[:error_description] = @description if @description.present?
params[:error_uri] = @uri if @uri.present?
params
end
def error_message
"#{@code}: #{@description}"
end
end
class InvalidRequest < BaseError
def initialize(description = nil, uri = nil)
super('invalid_request', description, uri)
end
end
class UnsupportedResponseType < BaseError
def initialize(supported)
super('unsupported_response_type', "Only the following response types are supported: #{supported.join(', ')}")
end
end
class InvalidScope < BaseError
def initialize(scopes, message: nil)
super('invalid_scope', message || "Unsupported scopes: #{scopes.join(', ')}")
end
end
class AccessDenied < BaseError
def initialize(message = 'The user rejected the authentication request')
super('access_denied', message)
end
end
class ServerError < BaseError
def initialize(description = nil, uri = nil)
super('server_error', description, uri)
end
end
class UnsupportedGrantType < BaseError
def initialize(supported)
super('unsupported_grant_type', "Only the following grant types are supported: #{supported.join(', ')}")
end
end
class InvalidGrant < BaseError
def initialize
super('invalid_grant', 'Provided code is not valid or has expired')
end
end
class InvalidClient < BaseError
def initialize
super('invalid_client', 'Invalid client ID or secret')
end
end
class LoginRequired < BaseError
def initialize
super('login_required', 'The user must be logged in')
end
end
end
end
end