RequestBuilder.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Signifyd\Model\SignifydGateway\Client;
  7. /**
  8. * Class RequestBuilder
  9. * Creates HTTP client, sends request to Signifyd and handles response
  10. */
  11. class RequestBuilder
  12. {
  13. /**
  14. * @var HttpClientFactory
  15. */
  16. private $clientCreator;
  17. /**
  18. * @var RequestSender
  19. */
  20. private $requestSender;
  21. /**
  22. * @var ResponseHandler
  23. */
  24. private $responseHandler;
  25. /**
  26. * RequestBuilder constructor.
  27. *
  28. * @param HttpClientFactory $clientCreator
  29. * @param RequestSender $requestSender
  30. * @param ResponseHandler $responseHandler
  31. */
  32. public function __construct(
  33. HttpClientFactory $clientCreator,
  34. RequestSender $requestSender,
  35. ResponseHandler $responseHandler
  36. ) {
  37. $this->clientCreator = $clientCreator;
  38. $this->requestSender = $requestSender;
  39. $this->responseHandler = $responseHandler;
  40. }
  41. /**
  42. * Creates HTTP client for API call.
  43. *
  44. * @param string $url
  45. * @param string $method
  46. * @param array $params
  47. * @param int|null $storeId
  48. * @return array
  49. */
  50. public function doRequest($url, $method, array $params = [], $storeId = null): array
  51. {
  52. $client = $this->clientCreator->create($url, $method, $params, $storeId);
  53. $response = $this->requestSender->send($client, $storeId);
  54. $result = $this->responseHandler->handle($response);
  55. return $result;
  56. }
  57. }