From 388e4604d9cb429b6e664f69f80351dd994087ae Mon Sep 17 00:00:00 2001 From: Artem Yurov Date: Sun, 8 Dec 2024 20:57:24 +0800 Subject: [PATCH] GuzzleSenderFactory: Guzzle Request Options (#51) --- docs/setup.md | 1 + src/Http/GuzzleSender.php | 4 ++-- src/Http/GuzzleSenderFactory.php | 6 ++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/setup.md b/docs/setup.md index a5af1ab5..8927abb3 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -38,6 +38,7 @@ $ms = new MoySklad( Библиотека содержит встроенную фабрику `GuzzleSenderFactory()`, принимающую следующие аргументы: * `retries` - количество повторных попыток отправки запроса в случае неудачи. По умолчанию 0 (одна отправка, без повторных попыток). Задержка между повторами экспоненциальна. * `exceptionTruncateAt` - максимальный размер сообщения об ошибке. Значение Guzzle по умолчанию - 120 символов, чего во многих ситуациях недостаточно. +* `requestOptions` - массив c [Guzzle Request Options](https://docs.guzzlephp.org/en/stable/request-options.html), можно задать, например, `connect_timeout` и `timeout` | - | [Оглавление](/docs/index.md) | [Взаимодействие с API >>](/docs/api_interaction.md) | |:--|:----------------------------:|----------------------------------------------------:| \ No newline at end of file diff --git a/src/Http/GuzzleSender.php b/src/Http/GuzzleSender.php index 36261e30..194da1d7 100644 --- a/src/Http/GuzzleSender.php +++ b/src/Http/GuzzleSender.php @@ -11,7 +11,7 @@ class GuzzleSender implements RequestSenderInterface { - public function __construct(private readonly Client $client) + public function __construct(private readonly Client $client, private readonly array $requestOptions = []) { } @@ -20,6 +20,6 @@ public function __construct(private readonly Client $client) */ public function send(RequestInterface $request): ResponseInterface { - return $this->client->send($request); + return $this->client->send($request, $this->requestOptions); } } diff --git a/src/Http/GuzzleSenderFactory.php b/src/Http/GuzzleSenderFactory.php index a24005ff..7c2aece9 100644 --- a/src/Http/GuzzleSenderFactory.php +++ b/src/Http/GuzzleSenderFactory.php @@ -21,10 +21,12 @@ class GuzzleSenderFactory implements RequestSenderFactoryInterface * * @param int $retries количество повторных попыток отправки запроса в случае неудачи * @param int $exceptionTruncateAt максимальный размер сообщения об ошибке + * @param array $requestOptions https://docs.guzzlephp.org/en/stable/request-options.html */ public function __construct( private readonly int $retries = 0, - private readonly int $exceptionTruncateAt = 4000 + private readonly int $exceptionTruncateAt = 4000, + private readonly array $requestOptions = [] ) { } @@ -38,7 +40,7 @@ protected function makeFromHandler(?callable $handler): GuzzleSender $handlerStack = HandlerStack::create($handler); $client = $this->createClient($handlerStack); - return new GuzzleSender($client); + return new GuzzleSender($client, $this->requestOptions); } protected function createClient(HandlerStack $handlerStack): Client