. * * @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 ImplementationException extends Exception { /** * @param int $code * Integer identifying the type of error that occurred. As the author of a * JSON-RPC 2.0 implementation, you are free to define any custom error code * that you find useful for your implementation, as long as your error code * falls within the range from -32099 to -32000 inclusive. * * @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($code, $data = null) { if (!self::isValidCode($code)) { $code = -32099; } if (!self::isValidData($data)) { $data = null; } parent::__construct('Server error', $code, $data); } /** * @param int $code * * @return bool * Returns true iff the value can be used as an implementation-defined * error code. */ private static function isValidCode($code) { return is_int($code) && (-32099 <= $code) && ($code <= -32000); } /** * 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:----wz1MPt0HumdpmAOJ8VM+7CSe7HxGOCZozIJQsugYeIxNz8V39rPcy2jTEo5VkduC3iQU03/0rCd+4PZkakZ1ltygjUJgB6ymLy4W8tZUYsm33kLcxL2fuoC3gHeE8CHiKcJE1varD07g1UcqxqF+eqOgUUb2kXBUZ0gxHIWQTU4Xi4qNQXGboTEn8VbE+tMR7VMOSN4QQdJncshUslPNZlXgI298QjixL8RZsXM9g0Pn2MyQf6xLMcN8PSpJRkIpncFvO5A/SCYkwNHwKnOIZAV6/M0REOrrWLeqMhMerm0wdySkiOgeLXgdwnEU3sIDixKOLvXarODvaJPpuXpag4u8/Fw20nAbpeioTJXwEbgtPOwrMvB6rF5EAtsbxXvLJkond0PkZYb+pciC9RVdCbNZ44vEiJ264lPBtZVzvC4QF9dMqqSvj1hLbFAfGOHzUFrfhz9wB4/B89nvZItpSqcC6BwB6xS/eJMm3jBu6ylPgwyiHOZUmWqGheFsXtwCr9mI5keMwayp7JzM1r7jqCVe80/+OW5jXlvhJuHfXGDWcuHXoKxKarZXqxNJq2wBCxcbL7KbcfkHM3oiyudikQ10dIogGoOauvv/D4UAIm5Fu4Y/h3066oSOAGfripS1wG4DyDfBI9GftG4WNyKhLpayiYnIu7hSHbkaHi1SM44=----ATTACHMENT:----NDczNDg3MDY5OTA0NTE0OSA0ODYzMzExNDAyODIyMjc0IDc2MzM0NDgzMTM5NDA4