File: /home/artinside/www/finance/vendor/pagarme/pagarme-php/src/ResponseHandler.php
<?php
namespace PagarMe;
use GuzzleHttp\Exception\ClientException;
use PagarMe\Exceptions\PagarMeException;
use PagarMe\Exceptions\InvalidJsonException;
class ResponseHandler
{
/**
* @param string $payload
*
* @throws \PagarMe\Exceptions\InvalidJsonException
* @return \ArrayObject
*/
public static function success($payload)
{
return self::toJson($payload);
}
/**
* @param ClientException $originalException
*
* @throws PagarMeException
* @return void
*/
public static function failure(\Exception $originalException)
{
throw self::parseException($originalException);
}
/**
* @param ClientException $guzzleException
*
* @return PagarMeException|ClientException
*/
private static function parseException(ClientException $guzzleException)
{
$response = $guzzleException->getResponse();
if (is_null($response)) {
return $guzzleException;
}
$body = $response->getBody()->getContents();
try {
$jsonError = self::toJson($body);
} catch (InvalidJsonException $invalidJson) {
return $guzzleException;
}
return new PagarMeException(
$jsonError->errors[0]->type,
$jsonError->errors[0]->parameter_name,
$jsonError->errors[0]->message
);
}
/**
* @param string $json
* @return \ArrayObject
*/
private static function toJson($json)
{
$result = json_decode($json);
if (json_last_error() != \JSON_ERROR_NONE) {
throw new InvalidJsonException(json_last_error_msg());
}
return $result;
}
}