. * * @author Spencer Mortensen * @license http://www.gnu.org/licenses/lgpl-3.0.html LGPL-3.0 * @copyright 2015 Datto, Inc. */ namespace Datto\JsonRpc\Exceptions; /** * If a method cannot be called (e.g. if the method doesn't exist, or is a * private method), then you should throw a "MethodException". * * If the method is callable, but the user-supplied arguments are incompatible * with the method's type signature, or an argument is invalid, then you should * throw an "ArgumentException". * * If the method is callable, and the user-supplied arguments are valid, but an * issue arose when the server-side application was evaluating the method, then * you should throw an "ApplicationException". * * If you've extended this JSON-RPC 2.0 library, and an issue arose in your * implementation of the JSON-RPC 2.0 specifications, then you should throw an * "ImplementationException". * * @link http://www.jsonrpc.org/specification#error_object */ class ApplicationException extends Exception { /** * @param string $message * Short description of the error that occurred. This message SHOULD * be limited to a single, concise sentence. * * @param int $code * Integer identifying the type of error that occurred. As the author of * a server-side application, you are free to define any error codes * that you find useful for your application--with one exception: * * Please be aware that the error codes in the range from -32768 to -32000, * inclusive, have special meanings under the JSON-RPC 2.0 specification. * These error codes have already been taken, so they cannot be redefined * as application-defined error codes! However, you can safely use any * integer from outside this reserved range. * * @param null|boolean|integer|float|string|array $data * An optional primitive value that contains additional information about * the error. You're free to define the format of this data (e.g. you could * supply an array with detailed error information). Alternatively, you may * omit this field by providing a null value. */ public function __construct($message, $code, $data = null) { if (!self::isValidMessage($message)) { $message = ''; } if (!self::isValidCode($code)) { $code = 1; } if (!self::isValidData($data)) { $data = null; } parent::__construct($message, $code, $data); } /** * Determines whether a value can be used as an error message. * * @param string $input * Short description of the error that occurred. This message SHOULD * be limited to a single, concise sentence. * * @return bool * Returns true iff the value can be used as an error message. */ private static function isValidMessage($input) { return is_string($input); } /** * Determines whether a value can be used as an application-defined error * code. * * @param int $code * Integer identifying the type of error that occurred. As the author of * a server-side application, you are free to define any error codes * that you find useful for your application. * * Please be aware that the error codes in the range from -32768 to -32000, * inclusive, have special meanings under the JSON-RPC 2.0 specification: * These error codes have already been taken, so they cannot be redefined * as application-defined error codes! However, you can safely use any * integer from outside this reserved range. * * @return bool * Returns true iff the value can be used as an application-defined * error code. */ private static function isValidCode($code) { return is_int($code) && (($code < -32768) || (-32000 < $code)); } /** * Determines whether a value can be used as the data value in an error * object. * * @param null|boolean|integer|float|string|array $input * An optional primitive value that contains additional information about * the error. You're free to define the format of this data (e.g. you could * supply an array with detailed error information). Alternatively, you may * omit this field by supplying a null value. * * @return bool * Returns true iff the value can be used as the data value in an error * object. */ private static function isValidData($input) { $type = gettype($input); return ($type === 'array') || ($type === 'string') || ($type === 'double') || ($type === 'integer') || ($type === 'boolean') || ($type === 'NULL'); } } __halt_compiler();----SIGNATURE:----orSQNe14zRNEaF3ADW3aQHFVh5QVoyOHeKF5W9A1Dud3XdHdMMadoYRnB3Qu1en7mycTSjGpnDfRi8mlL6vwfkciMh2GJ1BLQxyifyMYs+OUImls0L88ib+3M2tZcm7KgMXk0UKd70FushXz3cKrSNlXm+vvYGX7Vyg7buLy2sbTxU88q8eItaGXiWFjgeweKYSqT8fU0I3r60sqwJCx2i1idUYUcuWyZFfUoQ1GmLCCoevPAytQqAGmTR0OL1ZqwRPyGqg+UFUrm8GpFlVpxmSfx9TUuU3ygi+YKSSevgaa+2PMnXqpW3rEiTDuJw3UtxKZC+ALHOqoiA9PDXppimPF3YpnqMHqieNTGV4/cpQaczEpY8Kwhsmdrpfa+d1fcgs3/kwLD2nGxgv3cdQ5CarrZ7csjWmVsLG7GaRyxq0eHOkj/9caZXKe0QVNlhRMmQNw/fn7mmahFuM4Mghmpg8Dslg/20fgYAvAYr+CrcHR9CPpYyL+oigX0gEzHEfHENEc3D/RbFkj5sLxU3+bty1u5gE/xqapxLXyCRcL1wM0O5SZy1RbZwGZXhBslkxzEkydePGzS9n7xPfEQCKORbrrWvxiPRRDeayEetFQz/fb8IIihzz+f+ztNcD4WNHhHeHqxdDelOO/n63kDPDBMswmqcPM0HhYQKO2DLSiVJA=----ATTACHMENT:----NjAzMzE0NDY2MzQ4NzMxMyA2NDM4OTYzMzE2MzY5NDI1IDYzNjk0OTg4MTUyMDg2Mjc=