Files
YeePay/lib/Model/Transform/YosDownloadResponseUnMarshaller.php
2024-04-01 09:54:43 +08:00

44 lines
1.5 KiB
PHP

<?php
namespace Yeepay\Yop\Sdk\Model\Transform;
use Yeepay\Yop\Sdk\Exception\YopClientException;
use Yeepay\Yop\Sdk\Http\ContentType;
use Yeepay\Yop\Sdk\Http\HttpStatus;
use Yeepay\Yop\Sdk\Http\YopHttpResponse;
use Yeepay\Yop\Sdk\Model\BaseResponse;
use Yeepay\Yop\Sdk\Model\YosDownloadResponse;
class YosDownloadResponseUnMarshaller extends BaseResponseUnMarshaller
{
/**
* @return YosDownloadResponse
*/
protected function getResponseInstance()
{
return new YosDownloadResponse();
}
protected function handleContent(
YopHttpResponse $yopHttpResponse,
$contentType,
BaseResponse $response,
ResponseUnMarshalParams $params
) {
$statusCode = $yopHttpResponse->getStatusCode();
if ($statusCode / 100 == HttpStatus::SC_OK / 100 && $statusCode != HttpStatus::SC_NO_CONTENT) {
$response->setResult($yopHttpResponse->getContent());
} elseif ($statusCode >= HttpStatus::SC_INTERNAL_SERVER_ERROR && $statusCode != HttpStatus::SC_BAD_GATEWAY) {
$content = $yopHttpResponse->readContent();
if ($params->isNeedDecrypt() && $contentType == ContentType::APPLICATION_JSON) {
$content = $params->getEncryptor()->decrypt($content);
}
$this->handleErrorResponse($content, $response->getMetadata(), $yopHttpResponse);
} else {
throw new YopClientException("Unexpected http statusCode:".$statusCode);
}
}
}