From b7e1c9409017dc4fd184965c7f82a936b5f43d98 Mon Sep 17 00:00:00 2001 From: Hamza Alayed Date: Tue, 8 Aug 2023 15:24:06 +0300 Subject: [PATCH 1/5] Fix xml encode to resolve --- src/Core/CoreHelper.php | 10 ++++++++++ src/Core/HttpClients/SyncRestHandler.php | 1 + src/DataService/DataService.php | 11 ++++++----- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Core/CoreHelper.php b/src/Core/CoreHelper.php index 2aa31914..a7630277 100644 --- a/src/Core/CoreHelper.php +++ b/src/Core/CoreHelper.php @@ -159,4 +159,14 @@ public static function GetRequestLogging($serviceContext) return $requestLogger; } + + /** + * Clean up xml response + * @param $string + * @return array|string|null + */ + public static function encodeUTF8($string) + { + return preg_replace('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $string); + } } diff --git a/src/Core/HttpClients/SyncRestHandler.php b/src/Core/HttpClients/SyncRestHandler.php index 9db38d7d..86c04f98 100644 --- a/src/Core/HttpClients/SyncRestHandler.php +++ b/src/Core/HttpClients/SyncRestHandler.php @@ -310,6 +310,7 @@ public function LogAPIRequestToLog($requestBody, $requestUri, $httpHeaders){ * @return string|bool The DOM structured XML */ private function parseStringToDom($string){ + $string = CoreHelper::encodeUTF8($string); $dom = new \DOMDocument(); $dom->preserveWhiteSpace = FALSE; $dom->loadXML($string); diff --git a/src/DataService/DataService.php b/src/DataService/DataService.php index 688ab41b..7ff2bfd6 100644 --- a/src/DataService/DataService.php +++ b/src/DataService/DataService.php @@ -47,7 +47,7 @@ use QuickBooksOnline\API\Data\IPPPreferences; /** - * Class DataServicd + * Class DataService * * This file contains DataService performs CRUD operations on IPP REST APIs. */ @@ -802,13 +802,13 @@ public function Add($entity) $this->verifyOperationAccess($entity, __FUNCTION__); if ($this->isJsonOnly($entity)) { $this->forceJsonSerializers(); - } + } $httpsPostBody = $this->executeObjectSerializer($entity, $urlResource); // Builds resource Uri $resourceURI = implode(CoreConstants::SLASH_CHAR, array('company', $this->serviceContext->realmId, $urlResource)); - $uri = $this->handleTaxService($entity, $resourceURI); + $uri = $this->handleTaxService($entity, $resourceURI); // Send request return $this->sendRequestParseResponseBodyAndHandleHttpError($entity, $uri, $httpsPostBody, DataService::ADD); } @@ -948,7 +948,7 @@ public function DownloadPDF($entity, $dir=null, $returnPdfString = false) return $responseBody; } else { $this->lastError = false; - + return $this->processDownloadedContent(new ContentWriter($responseBody), $responseCode, $dir, $this->getExportFileNameForPDF($entity, "pdf")); } } @@ -1008,7 +1008,7 @@ public function Query($query, $startPosition = null, $maxResults = null, $includ $httpsUri = implode(CoreConstants::SLASH_CHAR, array('company', $this->serviceContext->realmId, 'query')); $httpsPostBody = $this->appendPaginationInfo($query, $startPosition, $maxResults); - + if(!is_null($includes)) { $httpsUri .= "?include=$includes"; } @@ -1024,6 +1024,7 @@ public function Query($query, $startPosition = null, $maxResults = null, $includ $this->lastError = false; $parsedResponseBody = null; try { + $responseBody = CoreHelper::encodeUTF8($responseBody); $responseXmlObj = simplexml_load_string($responseBody); if ($responseXmlObj && $responseXmlObj->QueryResponse) { $tmpXML = $responseXmlObj->QueryResponse->asXML(); From 4cc3be2aae8d89d88984f2e3aa28ee28bf2ba248 Mon Sep 17 00:00:00 2001 From: Hamza Alayed Date: Wed, 9 Aug 2023 17:30:04 +0300 Subject: [PATCH 2/5] :memo: change retrun type for function to fix Docblock-defined class, interface or enum named QuickBooksOnline\API\Core\HttpClients\Integer does not exist --- src/Core/HttpClients/FaultHandler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/HttpClients/FaultHandler.php b/src/Core/HttpClients/FaultHandler.php index 50b925bc..ee9df029 100644 --- a/src/Core/HttpClients/FaultHandler.php +++ b/src/Core/HttpClients/FaultHandler.php @@ -197,7 +197,7 @@ public function setResponseBody($body) /** * Return the status code of the Response * - * @return Integer The response status code + * @return int The response status code */ public function getHttpStatusCode() { From 31c2eb03373c7396ae588f205c328bf8a899eb7b Mon Sep 17 00:00:00 2001 From: Hamza Alayed Date: Fri, 27 Sep 2024 17:37:57 +0300 Subject: [PATCH 3/5] Update CoreHelper.php --- src/Core/CoreHelper.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Core/CoreHelper.php b/src/Core/CoreHelper.php index a7630277..72397f72 100644 --- a/src/Core/CoreHelper.php +++ b/src/Core/CoreHelper.php @@ -167,6 +167,9 @@ public static function GetRequestLogging($serviceContext) */ public static function encodeUTF8($string) { - return preg_replace('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $string); + if (mb_detect_encoding($string, 'UTF-8', true) === false) { + $string = utf8_encode($string); + } + return $string; } } From decff2f8a5eea2f6534ce42366cd298515714885 Mon Sep 17 00:00:00 2001 From: Hamza Alayed Date: Fri, 27 Sep 2024 17:38:25 +0300 Subject: [PATCH 4/5] Update CoreHelper.php --- src/Core/CoreHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/CoreHelper.php b/src/Core/CoreHelper.php index 72397f72..7399eb12 100644 --- a/src/Core/CoreHelper.php +++ b/src/Core/CoreHelper.php @@ -167,7 +167,7 @@ public static function GetRequestLogging($serviceContext) */ public static function encodeUTF8($string) { - if (mb_detect_encoding($string, 'UTF-8', true) === false) { + if (mb_detect_encoding($string, 'UTF-8', true) === false) { $string = utf8_encode($string); } return $string; From 40767065fef0b689aba8b6a13b2d57c2cbcde4ec Mon Sep 17 00:00:00 2001 From: Hamza Alayed Date: Thu, 10 Oct 2024 16:17:05 +0300 Subject: [PATCH 5/5] Update CoreHelper.php --- src/Core/CoreHelper.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Core/CoreHelper.php b/src/Core/CoreHelper.php index 7399eb12..856eee6a 100644 --- a/src/Core/CoreHelper.php +++ b/src/Core/CoreHelper.php @@ -167,6 +167,7 @@ public static function GetRequestLogging($serviceContext) */ public static function encodeUTF8($string) { + $string = preg_replace('/[\x00-\x1F\x7F]/u', '', $string); if (mb_detect_encoding($string, 'UTF-8', true) === false) { $string = utf8_encode($string); }