feat: added new exception class and error codes
This commit is contained in:
parent
9cd9a1dc5d
commit
a52a8fa3c7
2 changed files with 237 additions and 0 deletions
171
src/Appwrite/Extend/Exception/Codes.php
Normal file
171
src/Appwrite/Extend/Exception/Codes.php
Normal 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,
|
||||
]
|
||||
];
|
66
src/Appwrite/Extend/Exception/Exception.php
Normal file
66
src/Appwrite/Extend/Exception/Exception.php
Normal 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;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue