From: Christian Weiske Date: Thu, 22 Sep 2016 08:52:24 +0000 (+0200) Subject: Nicely display JSON error responses X-Git-Tag: v0.3.0~3 X-Git-Url: https://git.cweiske.de/shpub.git/commitdiff_plain/d2570fcd9d41934299fdd07e7c714fa5b97a5cbd?ds=sidebyside Nicely display JSON error responses --- diff --git a/src/shpub/Request.php b/src/shpub/Request.php index 68db98d..32e25de 100644 --- a/src/shpub/Request.php +++ b/src/shpub/Request.php @@ -96,15 +96,37 @@ class Request $res = $this->req->send(); if (intval($res->getStatus() / 100) != 2) { - Log::err( - 'Server returned an error status code ' . $res->getStatus() - ); - Log::err($res->getBody()); - exit(11); + $this->displayErrorResponse($res); } return $res; } + protected function displayErrorResponse($res) + { + Log::err( + 'Server returned an error status code ' . $res->getStatus() + ); + + $shown = false; + if ($res->getHeader('content-type') == 'application/json') { + $errData = json_decode($res->getBody()); + if (!isset($errData->error)) { + Log::err('Error response does not contain "error" property'); + } else if (isset($errData->error_description)) { + Log::err($errData->error . ': ' . $errData->error_description); + $shown = true; + } else { + Log::err($errData->error); + $shown = true; + } + } + + if (!$shown) { + Log::err($res->getBody()); + } + exit(11); + } + public function setAction($action) { $this->action = $action;