123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Payment\Gateway\Http\Client;
- use Magento\Framework\HTTP\ZendClient;
- use Magento\Framework\HTTP\ZendClientFactory;
- use Magento\Payment\Gateway\Http\ClientInterface;
- use Magento\Payment\Gateway\Http\ConverterInterface;
- use Magento\Payment\Gateway\Http\TransferInterface;
- use Magento\Payment\Model\Method\Logger;
- /**
- * Class Zend
- * @package Magento\Payment\Gateway\Http\Client
- * @api
- * @since 100.0.2
- */
- class Zend implements ClientInterface
- {
- /**
- * @var ZendClientFactory
- */
- private $clientFactory;
- /**
- * @var ConverterInterface | null
- */
- private $converter;
- /**
- * @var Logger
- */
- private $logger;
- /**
- * @param ZendClientFactory $clientFactory
- * @param Logger $logger
- * @param ConverterInterface | null $converter
- */
- public function __construct(
- ZendClientFactory $clientFactory,
- Logger $logger,
- ConverterInterface $converter = null
- ) {
- $this->clientFactory = $clientFactory;
- $this->converter = $converter;
- $this->logger = $logger;
- }
- /**
- * {inheritdoc}
- */
- public function placeRequest(TransferInterface $transferObject)
- {
- $log = [
- 'request' => $transferObject->getBody(),
- 'request_uri' => $transferObject->getUri()
- ];
- $result = [];
- /** @var ZendClient $client */
- $client = $this->clientFactory->create();
- $client->setConfig($transferObject->getClientConfig());
- $client->setMethod($transferObject->getMethod());
- switch ($transferObject->getMethod()) {
- case \Zend_Http_Client::GET:
- $client->setParameterGet($transferObject->getBody());
- break;
- case \Zend_Http_Client::POST:
- $client->setParameterPost($transferObject->getBody());
- break;
- default:
- throw new \LogicException(
- sprintf(
- 'Unsupported HTTP method %s',
- $transferObject->getMethod()
- )
- );
- }
- $client->setHeaders($transferObject->getHeaders());
- $client->setUrlEncodeBody($transferObject->shouldEncode());
- $client->setUri($transferObject->getUri());
- try {
- $response = $client->request();
- $result = $this->converter
- ? $this->converter->convert($response->getBody())
- : [$response->getBody()];
- $log['response'] = $result;
- } catch (\Zend_Http_Client_Exception $e) {
- throw new \Magento\Payment\Gateway\Http\ClientException(
- __($e->getMessage())
- );
- } catch (\Magento\Payment\Gateway\Http\ConverterException $e) {
- throw $e;
- } finally {
- $this->logger->debug($log);
- }
- return $result;
- }
- }
|