/** * A factory for creating the appropriate exception based on the response from Wit. * * @param WitResponse $response The response that threw the exception. * * @return WitResponseException */ public static function create(WitResponse $response) { $data = $response->getDecodedBody(); $code = isset($data['code']) ? $data['code'] : null; if (isset($data['error'])) { $message = $data['error']; } else { if (isset($data['errors'])) { foreach ($data['errors'] as $error) { $message = $error; } } else { $message = 'Unknown error from Wit.'; } } switch ($code) { case 'no-auth': return new static($response, new WitAuthorizationException($message, 401)); } return new static($response, new WitOtherException($message, $code)); }