From d950c0b1e650d2196b49f256736a9c8db2618818 Mon Sep 17 00:00:00 2001 From: shimon Date: Tue, 28 Jan 2025 12:44:08 +0200 Subject: [PATCH 1/7] JSON_UNESCAPED_SLASHES to json_encode --- src/Client.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client.php b/src/Client.php index cd73edd..f65d3d6 100644 --- a/src/Client.php +++ b/src/Client.php @@ -213,7 +213,7 @@ public function fetch( if (isset($this->headers['content-type'])) { $body = match ($this->headers['content-type']) { - self::CONTENT_TYPE_APPLICATION_JSON => json_encode($body), + self::CONTENT_TYPE_APPLICATION_JSON => json_encode($body,JSON_UNESCAPED_SLASHES), self::CONTENT_TYPE_APPLICATION_FORM_URLENCODED, self::CONTENT_TYPE_MULTIPART_FORM_DATA => self::flatten($body), self::CONTENT_TYPE_GRAPHQL => $body[0], default => $body, From ca9a6cb2bdfe3aa8186b1de2133af71e0b65ac7a Mon Sep 17 00:00:00 2001 From: shimon Date: Tue, 28 Jan 2025 17:00:10 +0200 Subject: [PATCH 2/7] JSON_UNESCAPED_SLASHES to json_encode --- src/Client.php | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/Client.php b/src/Client.php index f65d3d6..46288fe 100644 --- a/src/Client.php +++ b/src/Client.php @@ -35,6 +35,7 @@ class Client /** @var array $retryStatusCodes */ private array $retryStatusCodes = [500, 503]; + private mixed $jsonEncodeFlags; /** * @param string $key @@ -121,7 +122,33 @@ public function setMaxRetries(int $maxRetries): self $this->maxRetries = $maxRetries; return $this; } + /** + * set json_encode flags. + * + * @param array $flags + * @return self + */ + public function setJsonEncodeFlags(array $flags): self + { + $this->jsonEncodeFlags = implode('|', $flags); + return $this; + } + /** + * Encode to json. + * + * @param array $data + * @return string + */ + public function jsonEncode(array $data): string + { + + if(!empty($this->jsonEncodeFlags)) { + return json_encode($data, $this->jsonEncodeFlags); + } + + return json_encode($data); + } /** * Set the retry delay in milliseconds. * @@ -213,7 +240,7 @@ public function fetch( if (isset($this->headers['content-type'])) { $body = match ($this->headers['content-type']) { - self::CONTENT_TYPE_APPLICATION_JSON => json_encode($body,JSON_UNESCAPED_SLASHES), + self::CONTENT_TYPE_APPLICATION_JSON => $this->jsonEncode($body), self::CONTENT_TYPE_APPLICATION_FORM_URLENCODED, self::CONTENT_TYPE_MULTIPART_FORM_DATA => self::flatten($body), self::CONTENT_TYPE_GRAPHQL => $body[0], default => $body, From 4258e43ac2e5199543bbd2d2640402f7e9bf06e6 Mon Sep 17 00:00:00 2001 From: shimon Date: Tue, 28 Jan 2025 17:02:45 +0200 Subject: [PATCH 3/7] JSON_UNESCAPED_SLASHES to json_encode --- src/Client.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client.php b/src/Client.php index 46288fe..06f799c 100644 --- a/src/Client.php +++ b/src/Client.php @@ -140,7 +140,7 @@ public function setJsonEncodeFlags(array $flags): self * @param array $data * @return string */ - public function jsonEncode(array $data): string + private function jsonEncode(array $data): string { if(!empty($this->jsonEncodeFlags)) { From 3d5bf31f76d38ae8e04211dd19ce195aa2073c20 Mon Sep 17 00:00:00 2001 From: shimon Date: Tue, 28 Jan 2025 12:44:08 +0200 Subject: [PATCH 4/7] JSON_UNESCAPED_SLASHES to json_encode --- src/Client.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client.php b/src/Client.php index e52da87..fa1c05a 100644 --- a/src/Client.php +++ b/src/Client.php @@ -213,7 +213,7 @@ public function fetch( if (isset($this->headers['content-type']) && $body !== null) { $body = match ($this->headers['content-type']) { - self::CONTENT_TYPE_APPLICATION_JSON => json_encode($body), + self::CONTENT_TYPE_APPLICATION_JSON => json_encode($body,JSON_UNESCAPED_SLASHES), self::CONTENT_TYPE_APPLICATION_FORM_URLENCODED, self::CONTENT_TYPE_MULTIPART_FORM_DATA => self::flatten($body), self::CONTENT_TYPE_GRAPHQL => $body[0], default => $body, From 7416eb796d6ad81f6330c7f9cececfd2a5e9e955 Mon Sep 17 00:00:00 2001 From: shimon Date: Tue, 28 Jan 2025 17:00:10 +0200 Subject: [PATCH 5/7] JSON_UNESCAPED_SLASHES to json_encode --- src/Client.php | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/Client.php b/src/Client.php index fa1c05a..551a28e 100644 --- a/src/Client.php +++ b/src/Client.php @@ -35,6 +35,7 @@ class Client /** @var array $retryStatusCodes */ private array $retryStatusCodes = [500, 503]; + private mixed $jsonEncodeFlags; /** * @param string $key @@ -121,7 +122,33 @@ public function setMaxRetries(int $maxRetries): self $this->maxRetries = $maxRetries; return $this; } + /** + * set json_encode flags. + * + * @param array $flags + * @return self + */ + public function setJsonEncodeFlags(array $flags): self + { + $this->jsonEncodeFlags = implode('|', $flags); + return $this; + } + /** + * Encode to json. + * + * @param array $data + * @return string + */ + public function jsonEncode(array $data): string + { + + if(!empty($this->jsonEncodeFlags)) { + return json_encode($data, $this->jsonEncodeFlags); + } + + return json_encode($data); + } /** * Set the retry delay in milliseconds. * @@ -213,7 +240,7 @@ public function fetch( if (isset($this->headers['content-type']) && $body !== null) { $body = match ($this->headers['content-type']) { - self::CONTENT_TYPE_APPLICATION_JSON => json_encode($body,JSON_UNESCAPED_SLASHES), + self::CONTENT_TYPE_APPLICATION_JSON => $this->jsonEncode($body), self::CONTENT_TYPE_APPLICATION_FORM_URLENCODED, self::CONTENT_TYPE_MULTIPART_FORM_DATA => self::flatten($body), self::CONTENT_TYPE_GRAPHQL => $body[0], default => $body, From 93c230386796c52b804c7605cf247d3a41f4e32c Mon Sep 17 00:00:00 2001 From: shimon Date: Tue, 28 Jan 2025 17:02:45 +0200 Subject: [PATCH 6/7] JSON_UNESCAPED_SLASHES to json_encode --- src/Client.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client.php b/src/Client.php index 551a28e..7ded920 100644 --- a/src/Client.php +++ b/src/Client.php @@ -140,7 +140,7 @@ public function setJsonEncodeFlags(array $flags): self * @param array $data * @return string */ - public function jsonEncode(array $data): string + private function jsonEncode(array $data): string { if(!empty($this->jsonEncodeFlags)) { From d46047dfde8b1c4516cfdaec67f43a8b80168d69 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 14 Apr 2025 11:32:56 +0400 Subject: [PATCH 7/7] chore: linter and codeQL issues --- src/Client.php | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Client.php b/src/Client.php index a834c40..dbd4840 100644 --- a/src/Client.php +++ b/src/Client.php @@ -125,7 +125,7 @@ public function setMaxRetries(int $maxRetries): self /** * set json_encode flags. * - * @param array $flags + * @param array $flags * @return self */ public function setJsonEncodeFlags(array $flags): self @@ -135,19 +135,27 @@ public function setJsonEncodeFlags(array $flags): self } /** - * Encode to json. + * Encode to json. * - * @param array $data + * @param array $data * @return string + * @throws \Exception If JSON encoding fails */ private function jsonEncode(array $data): string { + $result = null; - if(!empty($this->jsonEncodeFlags)) { - return json_encode($data, $this->jsonEncodeFlags); + if (!empty($this->jsonEncodeFlags)) { + $result = json_encode($data, $this->jsonEncodeFlags); + } else { + $result = json_encode($data); + } + + if ($result === false) { + throw new Exception('Failed to encode data to JSON: ' . json_last_error_msg()); } - return json_encode($data); + return $result; } /** * Set the retry delay in milliseconds.