| 1: | <?php |
| 2: | |
| 3: | declare(strict_types=1); |
| 4: | |
| 5: | namespace OpenSearch\Exception; |
| 6: | |
| 7: | use OpenSearch\Common\Exceptions\OpenSearchException; |
| 8: | |
| 9: | |
| 10: | |
| 11: | |
| 12: | |
| 13: | |
| 14: | class JsonException extends \JsonException implements OpenSearchException |
| 15: | { |
| 16: | public function __construct(int $code, private readonly ?string $data, ?\Throwable $previous = null) |
| 17: | { |
| 18: | parent::__construct($this->getErrorMessage($code), $code, $previous); |
| 19: | } |
| 20: | |
| 21: | public function getData(): ?string |
| 22: | { |
| 23: | return $this->data; |
| 24: | } |
| 25: | |
| 26: | |
| 27: | |
| 28: | |
| 29: | private function getErrorMessage(int $code): string |
| 30: | { |
| 31: | return match ($code) { |
| 32: | JSON_ERROR_DEPTH => 'The maximum stack depth has been exceeded', |
| 33: | JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON', |
| 34: | JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded', |
| 35: | JSON_ERROR_SYNTAX => 'Syntax error', |
| 36: | JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded', |
| 37: | JSON_ERROR_RECURSION => 'One or more recursive references in the value to be encoded', |
| 38: | JSON_ERROR_INF_OR_NAN => 'One or more NAN or INF values in the value to be encoded', |
| 39: | JSON_ERROR_UNSUPPORTED_TYPE => 'A value of a type that cannot be encoded was given', |
| 40: | |
| 41: | |
| 42: | 9 => 'Decoding of value would result in invalid PHP property name', |
| 43: | 10 => 'Attempted to decode nonexistent UTF-16 code-point', |
| 44: | default => throw new \InvalidArgumentException("Encountered unknown JSON error code: [{$code}]"), |
| 45: | }; |
| 46: | } |
| 47: | } |
| 48: | |