|
<?php |
|
|
|
namespace JsonRPC\Validator; |
|
|
|
use JsonRPC\Exception\ResponseEncodingFailureException; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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); |
|
} |
|
} |
|
} |
|
|