Factory method to create a new response exception based on the response code.
RequestInterface $request Request:
Response $response Response received:
public static function factory(RequestInterface $request, Response $response) {
if ($response
->isClientError()) {
$label = 'Client error response';
$class = __NAMESPACE__ . '\\ClientErrorResponseException';
}
elseif ($response
->isServerError()) {
$label = 'Server error response';
$class = __NAMESPACE__ . '\\ServerErrorResponseException';
}
else {
$label = 'Unsuccessful response';
$class = __CLASS__;
$e = new self();
}
$message = $label . PHP_EOL . implode(PHP_EOL, array(
'[status code] ' . $response
->getStatusCode(),
'[reason phrase] ' . $response
->getReasonPhrase(),
'[url] ' . $request
->getUrl(),
'[request] ' . (string) $request,
'[response] ' . (string) $response,
));
$e = new $class($message);
$e
->setResponse($response);
$e
->setRequest($request);
return $e;
}