From 412984c5d7b03c9cd33c80d67b25161f5b79e560 Mon Sep 17 00:00:00 2001 From: Prihod Date: Sat, 5 May 2018 21:28:35 +0300 Subject: [PATCH 1/2] Adding param force_ip_resolve for HttpClient --- src/Analytics.php | 6 +++++- src/Network/HttpClient.php | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Analytics.php b/src/Analytics.php index 9e8ffa4..b726e6b 100644 --- a/src/Analytics.php +++ b/src/Analytics.php @@ -358,7 +358,7 @@ class Analytics * @var array */ protected $options = []; - + /** * Initializes to a list of all the available parameters to be sent in a hit. * @@ -609,6 +609,10 @@ protected function getHttpClientOptions() $options['timeout'] = $this->options['timeout']; } + if (isset($this->options['force_ip_resolve'])) { + $options['force_ip_resolve'] = $this->options['force_ip_resolve']; + } + return $options; } diff --git a/src/Network/HttpClient.php b/src/Network/HttpClient.php index 360fa09..baaf71a 100644 --- a/src/Network/HttpClient.php +++ b/src/Network/HttpClient.php @@ -6,6 +6,7 @@ use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request; use GuzzleHttp\Promise; +use GuzzleHttp\FORCE_IP_RESOLVE; use GuzzleHttp\Promise\PromiseInterface; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; @@ -99,6 +100,7 @@ public function post($url, array $options = []) 'synchronous' => !$opts['async'], 'timeout' => $opts['timeout'], 'connect_timeout' => $opts['timeout'], + 'force_ip_resolve' => $opts['force_ip_resolve'], ]); if ($opts['async']) { @@ -121,6 +123,7 @@ private function parseOptions(array $options) $defaultOptions = [ 'timeout' => static::REQUEST_TIMEOUT_SECONDS, 'async' => false, + 'force_ip_resolve' => 'v4', ]; $opts = []; From ae953fc622f25cb72eb7bd960950686f735f40a4 Mon Sep 17 00:00:00 2001 From: Prihod Date: Sat, 5 May 2018 23:17:26 +0300 Subject: [PATCH 2/2] Adding param force_ip_resolve for HttpClient (version 2) --- src/Network/HttpClient.php | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/Network/HttpClient.php b/src/Network/HttpClient.php index baaf71a..dcda905 100644 --- a/src/Network/HttpClient.php +++ b/src/Network/HttpClient.php @@ -96,12 +96,9 @@ public function post($url, array $options = []) ); $opts = $this->parseOptions($options); - $response = $this->getClient()->sendAsync($request, [ - 'synchronous' => !$opts['async'], - 'timeout' => $opts['timeout'], - 'connect_timeout' => $opts['timeout'], - 'force_ip_resolve' => $opts['force_ip_resolve'], - ]); + $opts = $this->prepareAsyncOptions($opts); + + $response = $this->getClient()->sendAsync($request, $opts); if ($opts['async']) { self::$promises[] = $response; @@ -112,6 +109,26 @@ public function post($url, array $options = []) return $this->getAnalyticsResponse($request, $response); } + + /** + * @param array $options + * @return array + */ + public function prepareAsyncOptions(array $options) + { + $opts = array( + 'synchronous' => !$options['async'], + 'timeout' => $options['timeout'], + 'connect_timeout' => $options['timeout'], + ); + + if (!empty($options['force_ip_resolve'])) { + $opts['force_ip_resolve'] = $options['force_ip_resolve']; + } + + return $opts; + } + /** * Parse the given options and fill missing fields with default values. * @@ -123,7 +140,7 @@ private function parseOptions(array $options) $defaultOptions = [ 'timeout' => static::REQUEST_TIMEOUT_SECONDS, 'async' => false, - 'force_ip_resolve' => 'v4', + 'force_ip_resolve' => '', ]; $opts = [];