Your IP : 18.188.249.160


Current Path : /var/www/www-root/data/www/info.monolith-realty.ru/bitrix/modules/rest/lib/
Upload File :
Current File : /var/www/www-root/data/www/info.monolith-realty.ru/bitrix/modules/rest/lib/restexception.php

<?
namespace Bitrix\Rest;

class RestException
	extends \Exception
{
	const ERROR_INTERNAL_WRONG_TRANSPORT = 'INTERNAL_WRONG_TRANSPORT';
	const ERROR_INTERNAL_WRONG_HANDLER_CLASS = 'INTERNAL_WRONG_HANDLER_CLASS';
	const ERROR_INTERNAL_WRONG_FILE_HANDLER = 'INTERNAL_WRONG_FILE_HANDLER';
	const ERROR_INTERNAL_PORTAL_DELETED = 'PORTAL_DELETED';

	const ERROR_OAUTH = 'ERROR_OAUTH';
	const ERROR_METHOD_NOT_FOUND = 'ERROR_METHOD_NOT_FOUND';
	const ERROR_OPERATION_TIME_LIMIT = 'OPERATION_TIME_LIMIT';
	const ERROR_CORE = 'ERROR_CORE';
	const ERROR_ARGUMENT = 'ERROR_ARGUMENT';
	const ERROR_NOT_FOUND = 'ERROR_NOT_FOUND';

	protected $status;
	protected $error_code;
	protected $error_additional = array();

	public function __construct($message, $code = "", $status = 0, \Exception $previous = null)
	{
		$this->status = $status;
		$this->error_code = $code;
		$message = strval($message);

		parent::__construct($message, intval($code), $previous);
	}

	public function getErrorCode()
	{
		return $this->error_code;
	}

	public function setErrorCode($error_code)
	{
		$this->error_code = $error_code;
		$this->code = intval($error_code);
	}

	public function getStatus()
	{
		return $this->status == 0 ? \CRestServer::STATUS_WRONG_REQUEST : $this->status;
	}

	public function setStatus($status)
	{
		$this->status = $status;
	}

	public function setMessage($msg)
	{
		$this->message = $msg;
	}

	public function getAdditional()
	{
		return $this->error_additional;
	}

	public function setAdditional($error_additional)
	{
		$this->error_additional = $error_additional;
	}

	public function setApplicationException(\CApplicationException $ex)
	{
		if($ex->getId())
		{
			$this->setErrorCode($ex->getId());
		}
		else
		{
			$this->setErrorCode(self::ERROR_CORE);
		}

		$this->message = $ex->getString();
	}

	public static function initFromException(\Exception $e)
	{
		$ex = null;

		if (is_a($e, '\Bitrix\Main\DB\SqlException'))
		{
			$ex = new self(
				"SQL query error!",
				self::ERROR_CORE,
				\CRestServer::STATUS_INTERNAL,
				$e->getPrevious()
			);
		}
		elseif(is_a($e, '\Bitrix\Main\SystemException'))
		{
			if(is_a($e, '\Bitrix\Main\ArgumentException'))
			{
				$ex = new self(
					$e->getMessage(),
					self::ERROR_ARGUMENT,
					\CRestServer::STATUS_WRONG_REQUEST,
					$e->getPrevious()
				);

				$ex->setAdditional(array(
					"argument" => $e->getParameter(),
				));
			}
		}

		if(!$ex)
		{
			$ex = new self(
				$e->getMessage(),
				$e->getCode() ? $e->getCode() : self::ERROR_CORE,
				\CRestServer::STATUS_WRONG_REQUEST,
				$e->getPrevious()
			);
		}

		return $ex;
	}
}
?>