From 0e34e6b069a195fe40b8803094e27a67c945e855 Mon Sep 17 00:00:00 2001 From: Marc Lough Date: Thu, 19 Apr 2018 22:30:35 +0100 Subject: [PATCH] Use full body content as exception message when catching ClientException (with Guzzle 6) --- src/Client.php | 29 ++++++++++++++++------- src/Exceptions/BadRequestException.php | 4 ++-- src/Exceptions/MissingOptionException.php | 4 ++-- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/Client.php b/src/Client.php index c51d973..5d30162 100644 --- a/src/Client.php +++ b/src/Client.php @@ -145,7 +145,7 @@ class Client 'events' => 'Repositories\EventRepository', 'configMaps' => 'Repositories\ConfigMapRepository', 'endpoints' => 'Repositories\EndpointRepository', - 'persistentVolume' => 'Repositories\PersistentVolumeRepository', + 'persistentVolume' => 'Repositories\PersistentVolumeRepository', 'persistentVolumeClaims' => 'Repositories\PersistentVolumeClaimRepository', 'namespaces' => 'Repositories\NamespaceRepository', @@ -312,7 +312,7 @@ public function getGuzzleClient() * @param boolean $namespace * @param string $apiVersion * @return array|string - * @throws \Exception + * @throws \Maclof\Kubernetes\Exceptions\BadRequestException */ public function sendRequest($method, $uri, $query = [], $body = [], $namespace = true, $apiVersion = null) { @@ -339,7 +339,7 @@ public function sendRequest($method, $uri, $query = [], $body = [], $namespace = $request = $this->guzzleClient->createRequest($method, $requestUri, $requestOptions); $response = $this->guzzleClient->send($request); } catch (ClientException $e) { - throw new BadRequestException($e->getMessage()); + throw new BadRequestException($e->getMessage(), 0, $e); } try { @@ -349,15 +349,28 @@ public function sendRequest($method, $uri, $query = [], $body = [], $namespace = } } - $response = $this->guzzleClient->request($method, $requestUri, $requestOptions); + try { + $response = $this->guzzleClient->request($method, $requestUri, $requestOptions); - $bodyResponse = (string) $response->getBody(); - $jsonResponse = json_decode($bodyResponse, true); + $bodyResponse = (string) $response->getBody(); + $jsonResponse = json_decode($bodyResponse, true); - return is_array($jsonResponse) ? $jsonResponse : $bodyResponse; + return is_array($jsonResponse) ? $jsonResponse : $bodyResponse; + } catch (ClientException $e) { + $fullMessage = (string) $e->getResponse()->getBody(); + throw new BadRequestException($fullMessage, 0, $e); + } } - public function __call($name, $args) + /** + * Magic call method to grab a class instance. + * + * @param string $name + * @param array $args + * @return \stdClass + * @throws \BadMethodCallException + */ + public function __call($name, array $args) { if (isset($this->classMap[$name])) { $class = 'Maclof\Kubernetes\\' . $this->classMap[$name]; diff --git a/src/Exceptions/BadRequestException.php b/src/Exceptions/BadRequestException.php index d7e770f..1b24df6 100644 --- a/src/Exceptions/BadRequestException.php +++ b/src/Exceptions/BadRequestException.php @@ -4,5 +4,5 @@ class BadRequestException extends Exception { - -} \ No newline at end of file + +} diff --git a/src/Exceptions/MissingOptionException.php b/src/Exceptions/MissingOptionException.php index 81eb6da..abe65ac 100644 --- a/src/Exceptions/MissingOptionException.php +++ b/src/Exceptions/MissingOptionException.php @@ -4,5 +4,5 @@ class MissingOptionException extends Exception { - -} \ No newline at end of file + +}