TelegramPWA/src/lib/gramjs/errors/RPCBaseErrors.js
Alexander Zinchuk 3afcde3217 Initial commit
2021-04-09 14:11:51 +03:00

124 lines
3.0 KiB
JavaScript

/**
* Base class for all Remote Procedure Call errors.
*/
class RPCError extends Error {
constructor(message, request, code = null) {
super(
'RPCError {0}: {1}{2}'
.replace('{0}', code)
.replace('{1}', message)
.replace('{2}', RPCError._fmtRequest(request))
)
this.code = code
this.message = message
}
static _fmtRequest(request) {
// TODO fix this
if (request) {
return ` (caused by ${request.className})`
} else {
return ''
}
}
}
/**
* The request must be repeated, but directed to a different data center.
*/
class InvalidDCError extends RPCError {
constructor(request, message, code) {
super(message, request, code)
this.code = code || 303
this.message = message || 'ERROR_SEE_OTHER'
}
}
/**
* The query contains errors. In the event that a request was created
* using a form and contains user generated data, the user should be
* notified that the data must be corrected before the query is repeated.
*/
class BadRequestError extends RPCError {
code = 400
message = 'BAD_REQUEST'
}
/**
* There was an unauthorized attempt to use functionality available only
* to authorized users.
*/
class UnauthorizedError extends RPCError {
code = 401
message = 'UNAUTHORIZED'
}
/**
* Privacy violation. For example, an attempt to write a message to
* someone who has blacklisted the current user.
*/
class ForbiddenError extends RPCError {
code = 403
message = 'FORBIDDEN'
}
/**
* An attempt to invoke a non-existent object, such as a method.
*/
class NotFoundError extends RPCError {
code = 404
message = 'NOT_FOUND'
}
/**
* Errors related to invalid authorization key, like
* AUTH_KEY_DUPLICATED which can cause the connection to fail.
*/
class AuthKeyError extends RPCError {
code = 406
message = 'AUTH_KEY'
}
/**
* The maximum allowed number of attempts to invoke the given method
* with the given input parameters has been exceeded. For example, in an
* attempt to request a large number of text messages (SMS) for the same
* phone number.
*/
class FloodError extends RPCError {
code = 420
message = 'FLOOD'
}
/**
* An internal server error occurred while a request was being processed
* for example, there was a disruption while accessing a database or file
* storage
*/
class ServerError extends RPCError {
code = 500 // Also witnessed as -500
message = 'INTERNAL'
}
/**
* Clicking the inline buttons of bots that never (or take to long to)
* call ``answerCallbackQuery`` will result in this "special" RPCError.
*/
class TimedOutError extends RPCError {
code = 503 // Only witnessed as -503
message = 'Timeout'
}
module.exports = {
RPCError,
InvalidDCError,
BadRequestError,
UnauthorizedError,
ForbiddenError,
NotFoundError,
AuthKeyError,
FloodError,
ServerError,
TimedOutError,
}