summaryrefslogtreecommitdiff
path: root/libs/jsonrpc/src/JsonRPC/Validator/JsonEncodingValidator.php
diff options
context:
space:
mode:
authorFrédéric Guillot <fred@kanboard.net>2018-06-21 14:13:41 -0700
committerFrédéric Guillot <fred@kanboard.net>2018-06-21 14:13:41 -0700
commita491348d442ab8e6cd2fa403d4365cdad78e52ce (patch)
treea00f575d82afb2c9051bad95398b4250f4a3d44d /libs/jsonrpc/src/JsonRPC/Validator/JsonEncodingValidator.php
parentc73ac5f1f818b6b21083f6785b4b2f6d778a6496 (diff)
Vendoring deprecated composer libs
Diffstat (limited to 'libs/jsonrpc/src/JsonRPC/Validator/JsonEncodingValidator.php')
-rw-r--r--libs/jsonrpc/src/JsonRPC/Validator/JsonEncodingValidator.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/libs/jsonrpc/src/JsonRPC/Validator/JsonEncodingValidator.php b/libs/jsonrpc/src/JsonRPC/Validator/JsonEncodingValidator.php
new file mode 100644
index 00000000..0bbc4abd
--- /dev/null
+++ b/libs/jsonrpc/src/JsonRPC/Validator/JsonEncodingValidator.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace JsonRPC\Validator;
+
+use JsonRPC\Exception\ResponseEncodingFailureException;
+
+/**
+ * Class JsonEncodingValidator
+ *
+ * @package JsonRPC\Validator
+ * @author Frederic Guillot
+ */
+class JsonEncodingValidator
+{
+ public static function validate()
+ {
+ $jsonError = json_last_error();
+
+ if ($jsonError !== JSON_ERROR_NONE) {
+ switch ($jsonError) {
+ case JSON_ERROR_DEPTH:
+ $errorMessage = 'Maximum stack depth exceeded';
+ break;
+ case JSON_ERROR_STATE_MISMATCH:
+ $errorMessage = 'Underflow or the modes mismatch';
+ break;
+ case JSON_ERROR_CTRL_CHAR:
+ $errorMessage = 'Unexpected control character found';
+ break;
+ case JSON_ERROR_SYNTAX:
+ $errorMessage = 'Syntax error, malformed JSON';
+ break;
+ case JSON_ERROR_UTF8:
+ $errorMessage = 'Malformed UTF-8 characters, possibly incorrectly encoded';
+ break;
+ default:
+ $errorMessage = 'Unknown error';
+ break;
+ }
+
+ throw new ResponseEncodingFailureException($errorMessage, $jsonError);
+ }
+ }
+}