From c059f65814478d793847cfa7c534bc0233ab3c2a Mon Sep 17 00:00:00 2001 From: Pablo Haedo Date: Fri, 4 Oct 2019 12:12:27 -0300 Subject: [PATCH 1/2] Fixes responses empty body on put requests --- DNSMadeEasy/driver/REST.php | 2 +- DNSMadeEasy/driver/Response.php | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/DNSMadeEasy/driver/REST.php b/DNSMadeEasy/driver/REST.php index d95cbf2..4e77e10 100644 --- a/DNSMadeEasy/driver/REST.php +++ b/DNSMadeEasy/driver/REST.php @@ -183,7 +183,7 @@ private function send($command, $uriParameters, $method, $content = NULL) $info = curl_getinfo($ch); $request = new Request($info, $content); - $response = new Response($result, $info['total_time']); + $response = new Response($result, $info['total_time'], $method); //If debug mode is on, output the debug messages. if ($this->_config->getDebug()) { diff --git a/DNSMadeEasy/driver/Response.php b/DNSMadeEasy/driver/Response.php index 84294ee..e7e2cf8 100644 --- a/DNSMadeEasy/driver/Response.php +++ b/DNSMadeEasy/driver/Response.php @@ -108,11 +108,11 @@ class Response * @param string $response The response containing the headers and body as a string. * @param float $timeTaken The time taken in seconds. */ - public function __construct($response, $timeTaken) + public function __construct($response, $timeTaken, $method = false) { $this->_timeTaken = $timeTaken; - $parsed = $this->parseMessage($response); + $parsed = $this->parseMessage($response, $method); $this->_rawHeaders = $parsed['headers']; $this->_body = trim($this->fixJSON($parsed['body'])); @@ -193,7 +193,7 @@ public function getRawHeaders() * @throws RESTException * @return array */ - private function parseMessage($message) + private function parseMessage($message, $method) { assert(is_string($message)); @@ -207,7 +207,11 @@ private function parseMessage($message) $border = strpos($message, $barrier); if ($border === false) { - throw new RESTException('Got an invalid response from the server.'); + if ('put' == $method) { + $border = strlen($message); + } else { + throw new RESTException('Got an invalid response from the server.'); + } } $result = array(); From 3da585898b2d84d3f546516043e01d2fbf545497 Mon Sep 17 00:00:00 2001 From: Pablo Haedo Date: Fri, 4 Oct 2019 13:12:00 -0300 Subject: [PATCH 2/2] fixed support for delete as well as put methods --- DNSMadeEasy/driver/Response.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/DNSMadeEasy/driver/Response.php b/DNSMadeEasy/driver/Response.php index e7e2cf8..2129db4 100644 --- a/DNSMadeEasy/driver/Response.php +++ b/DNSMadeEasy/driver/Response.php @@ -103,6 +103,15 @@ class Response 505 => 'HTTP Version Not Supported', ); + /** + * These methods won't receive a response body + * @var array + */ + private $_httpMethodsWithoutBody = array( + 'delete', + 'put', + ); + /** * Construct the driver response. * @param string $response The response containing the headers and body as a string. @@ -207,7 +216,7 @@ private function parseMessage($message, $method) $border = strpos($message, $barrier); if ($border === false) { - if ('put' == $method) { + if (in_array($method,$this->_httpMethodsWithoutBody)) { $border = strlen($message); } else { throw new RESTException('Got an invalid response from the server.');