| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | 
							- <?php
 
- namespace Aws\Handler\GuzzleV6;
 
- use Exception;
 
- use GuzzleHttp\Exception\ConnectException;
 
- use GuzzleHttp\Exception\RequestException;
 
- use GuzzleHttp\Promise;
 
- use GuzzleHttp\Client;
 
- use GuzzleHttp\ClientInterface;
 
- use GuzzleHttp\TransferStats;
 
- use Psr\Http\Message\RequestInterface as Psr7Request;
 
- /**
 
-  * A request handler that sends PSR-7-compatible requests with Guzzle 6.
 
-  */
 
- class GuzzleHandler
 
- {
 
-     /** @var ClientInterface */
 
-     private $client;
 
-     /**
 
-      * @param ClientInterface $client
 
-      */
 
-     public function __construct(ClientInterface $client = null)
 
-     {
 
-         $this->client = $client ?: new Client();
 
-     }
 
-     /**
 
-      * @param Psr7Request $request
 
-      * @param array       $options
 
-      *
 
-      * @return Promise\Promise
 
-      */
 
-     public function __invoke(Psr7Request $request, array $options = [])
 
-     {
 
-         $request = $request->withHeader(
 
-             'User-Agent',
 
-             $request->getHeaderLine('User-Agent')
 
-                 . ' ' . \GuzzleHttp\default_user_agent()
 
-         );
 
-         return $this->client->sendAsync($request, $this->parseOptions($options))
 
-             ->otherwise(
 
-                 static function ($e) {
 
-                     $error = [
 
-                         'exception'        => $e,
 
-                         'connection_error' => $e instanceof ConnectException,
 
-                         'response'         => null,
 
-                     ];
 
-                     if (
 
-                         ($e instanceof RequestException)
 
-                         && $e->getResponse()
 
-                     ) {
 
-                         $error['response'] = $e->getResponse();
 
-                     }
 
-                     return new Promise\RejectedPromise($error);
 
-                 }
 
-             );
 
-     }
 
-     private function parseOptions(array $options)
 
-     {
 
-         if (isset($options['http_stats_receiver'])) {
 
-             $fn = $options['http_stats_receiver'];
 
-             unset($options['http_stats_receiver']);
 
-             $prev = isset($options['on_stats'])
 
-                 ? $options['on_stats']
 
-                 : null;
 
-             $options['on_stats'] = static function (
 
-                 TransferStats $stats
 
-             ) use ($fn, $prev) {
 
-                 if (is_callable($prev)) {
 
-                     $prev($stats);
 
-                 }
 
-                 $transferStats = ['total_time' => $stats->getTransferTime()];
 
-                 $transferStats += $stats->getHandlerStats();
 
-                 $fn($transferStats);
 
-             };
 
-         }
 
-         return $options;
 
-     }
 
- }
 
 
  |