1
0
Fork 0
mirror of synced 2024-09-29 08:51:28 +13:00

feat: added new exception class and error codes

This commit is contained in:
Christy Jacob 2022-01-30 02:15:01 +04:00
parent 9cd9a1dc5d
commit a52a8fa3c7
2 changed files with 237 additions and 0 deletions

View file

@ -0,0 +1,171 @@
<?php
use Appwrite\Extend\Exception\Exception;
return [
Exception::TYPE_NONE => [
'name' => Exception::TYPE_NONE,
'description' => 'Generic error',
'statusCode' => 500,
],
Exception::TYPE_PROJECT_NOT_FOUND => [
'name' => Exception::TYPE_PROJECT_NOT_FOUND,
'description' => 'Project not found',
'statusCode' => 404,
],
Exception::TYPE_PROJECT_UNKNOWN => [
'name' => Exception::TYPE_PROJECT_UNKNOWN,
'description' => 'Project unknown',
'statusCode' => 500,
],
Exception::TYPE_INVALID_ORIGIN => [
'name' => Exception::TYPE_INVALID_ORIGIN,
'description' => 'Invalid origin',
'statusCode' => 403,
],
Exception::TYPE_SERVICE_DISABLED => [
'name' => Exception::TYPE_SERVICE_DISABLED,
'description' => 'Service disabled',
'statusCode' => 403,
],
Exception::TYPE_UNAUTHORIZED_SCOPE => [
'name' => Exception::TYPE_UNAUTHORIZED_SCOPE,
'description' => 'Unauthorized scope',
'statusCode' => 403,
],
Exception::TYPE_PASSWORD_RESET_REQUIRED => [
'name' => Exception::TYPE_PASSWORD_RESET_REQUIRED,
'description' => 'Password reset required',
'statusCode' => 403,
],
Exception::TYPE_STORAGE_ERROR => [
'name' => Exception::TYPE_STORAGE_ERROR,
'description' => 'Storage error',
'statusCode' => 500,
],
Exception::TYPE_RATE_LIMIT_EXCEEDED => [
'name' => Exception::TYPE_RATE_LIMIT_EXCEEDED,
'description' => 'Rate limit exceeded',
'statusCode' => 429,
],
Exception::TYPE_SMTP_DISABLED => [
'name' => Exception::TYPE_SMTP_DISABLED,
'description' => 'SMTP disabled',
'statusCode' => 500,
],
Exception::TYPE_EMAIL_NOT_WHITELISTED => [
'name' => Exception::TYPE_EMAIL_NOT_WHITELISTED,
'description' => 'Email not whitelisted',
'statusCode' => 403,
],
Exception::TYPE_IP_NOT_WHITELISTED => [
'name' => Exception::TYPE_IP_NOT_WHITELISTED,
'description' => 'IP Address not whitelisted',
'statusCode' => 404,
],
Exception::TYPE_INVALID_CREDENTIALS => [
'name' => Exception::TYPE_INVALID_CREDENTIALS,
'description' => 'Invalid credentials',
'statusCode' => 404,
],
Exception::TYPE_INVALID_TOKEN => [
'name' => Exception::TYPE_INVALID_TOKEN,
'description' => 'Invalid token',
'statusCode' => 403,
],
Exception::TYPE_JWT_VERIFICATION_FAILED => [
'name' => Exception::TYPE_JWT_VERIFICATION_FAILED,
'description' => 'Invalid refresh token',
'statusCode' => 403,
],
Exception::TYPE_ANONYMOUS_CONSOLE_USER => [
'name' => Exception::TYPE_ANONYMOUS_CONSOLE_USER,
'description' => 'Anonymous session cannot be created for the console project.',
'statusCode' => 403,
],
Exception::TYPE_SESSION_NOT_FOUND => [
'name' => Exception::TYPE_SESSION_NOT_FOUND,
'description' => 'Session not found',
'statusCode' => 400,
],
Exception::TYPE_SESSION_ALREADY_EXISTS => [
'name' => Exception::TYPE_SESSION_ALREADY_EXISTS,
'description' => 'Session already exists',
'statusCode' => 403,
],
Exception::TYPE_USER_LIMIT_EXCEEDED => [
'name' => Exception::TYPE_USER_LIMIT_EXCEEDED,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_USER_ALREADY_EXISTS => [
'name' => Exception::TYPE_USER_ALREADY_EXISTS,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_USER_BLOCKED => [
'name' => Exception::TYPE_USER_BLOCKED,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_USER_CREATION_FAILED => [
'name' => Exception::TYPE_USER_CREATION_FAILED,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_USER_NOT_FOUND => [
'name' => Exception::TYPE_USER_NOT_FOUND,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_EMAIL_ALREADY_EXISTS => [
'name' => Exception::TYPE_EMAIL_ALREADY_EXISTS,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_PASSWORD_MISMATCH => [
'name' => Exception::TYPE_PASSWORD_MISMATCH,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_AUTH_METHOD_UNSUPPORTED => [
'name' => Exception::TYPE_AUTH_METHOD_UNSUPPORTED,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_PROVIDER_DISABLED => [
'name' => Exception::TYPE_PROVIDER_DISABLED,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_PROVIDER_NOT_SUPPORTED => [
'name' => Exception::TYPE_PROVIDER_NOT_SUPPORTED,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_INVALID_LOGIN_STATE_PARAMS => [
'name' => Exception::TYPE_INVALID_LOGIN_STATE_PARAMS,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_INVALID_SUCCESS_URL => [
'name' => Exception::TYPE_INVALID_SUCCESS_URL,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_INVALID_FAILURE_URL => [
'name' => Exception::TYPE_INVALID_FAILURE_URL,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_OAUTH_ACCESS_TOKEN_FAILED => [
'name' => Exception::TYPE_OAUTH_ACCESS_TOKEN_FAILED,
'description' => 'Session expired',
'statusCode' => 403,
],
Exception::TYPE_MISSING_PROVIDER_ID => [
'name' => Exception::TYPE_MISSING_PROVIDER_ID,
'description' => 'Session expired',
'statusCode' => 403,
]
];

View file

@ -0,0 +1,66 @@
<?php
namespace Appwrite\Extend\Exception;
class Exception extends \Exception
{
/**
* Error Codes
*/
const TYPE_NONE = '';
/** API */
const TYPE_PROJECT_NOT_FOUND = 'project_not_found';
const TYPE_PROJECT_UNKNOWN = 'project_unknown';
const TYPE_INVALID_ORIGIN = 'invalid_origin';
const TYPE_SERVICE_DISABLED = 'service_disabled';
const TYPE_UNAUTHORIZED_SCOPE = 'unauthorized_scope';
const TYPE_PASSWORD_RESET_REQUIRED = 'password_reset_required';
const TYPE_STORAGE_ERROR = 'storage_error';
const TYPE_RATE_LIMIT_EXCEEDED = 'rate_limit_exceeded';
const TYPE_SMTP_DISABLED = 'smtp_disabled';
/** Users **/
const TYPE_EMAIL_NOT_WHITELISTED = 'email_not_whitelisted';
const TYPE_IP_NOT_WHITELISTED = 'ip_not_whitelisted';
const TYPE_INVALID_CREDENTIALS = 'invalid_credentials';
const TYPE_INVALID_TOKEN = 'invalid_token';
const TYPE_JWT_VERIFICATION_FAILED = 'jwt_verification_failed';
const TYPE_ANONYMOUS_CONSOLE_USER = 'anonymous_console_user';
const TYPE_SESSION_NOT_FOUND = 'session_not_found';
const TYPE_SESSION_ALREADY_EXISTS = 'session_already_exists';
const TYPE_USER_LIMIT_EXCEEDED = 'user_limit_exceeded';
const TYPE_USER_ALREADY_EXISTS = 'user_already_exists';
const TYPE_USER_BLOCKED = 'user_blocked';
const TYPE_USER_CREATION_FAILED = 'user_creation_failed';
const TYPE_USER_NOT_FOUND = 'user_not_found';
const TYPE_EMAIL_ALREADY_EXISTS = 'email_already_exists';
const TYPE_PASSWORD_MISMATCH = 'password_mismatch';
const TYPE_AUTH_METHOD_UNSUPPORTED = 'auth_method_unsupported';
/** OAuth **/
const TYPE_PROVIDER_DISABLED = 'provider_disabled';
const TYPE_PROVIDER_NOT_SUPPORTED = 'provider_not_supported';
const TYPE_INVALID_LOGIN_STATE_PARAMS = 'invalid_login_state_params';
const TYPE_INVALID_SUCCESS_URL = 'invalid_success_url';
const TYPE_INVALID_FAILURE_URL = 'invalid_failure_url';
const TYPE_OAUTH_ACCESS_TOKEN_FAILED = 'oauth_access_token_failed';
const TYPE_MISSING_PROVIDER_ID = 'missing_provider_id';
private $errorCode = '';
public function __construct(string $message, int $code = 0, string $errorCode = Exception::TYPE_NONE, \Throwable $previous = null)
{
$this->errorCode = $errorCode;
parent::__construct($message, $code, $previous);
}
/**
* @return string
*/
public function getErrorCode(): string
{
return $this->errorCode;
}
}