9 use Psr\Log\LoggerInterface;
 
   26         return function (callable $handler) {
 
   27             return function ($request, array $options) use ($handler) {
 
   28                 if (empty($options[
'cookies'])) {
 
   29                     return $handler($request, $options);
 
   31                     throw new \InvalidArgumentException(
'cookies must be an instance of GuzzleHttp\Cookie\CookieJarInterface');
 
   33                 $cookieJar = $options[
'cookies'];
 
   34                 $request = $cookieJar->withCookieHeader($request);
 
   35                 return $handler($request, $options)
 
   37                         function ($response) use ($cookieJar, $request) {
 
   38                             $cookieJar->extractCookies($request, $response);
 
   54         return function (callable $handler) {
 
   55             return function ($request, array $options) use ($handler) {
 
   56                 if (empty($options[
'http_errors'])) {
 
   57                     return $handler($request, $options);
 
   59                 return $handler($request, $options)->then(
 
   61                         $code = $response->getStatusCode();
 
   65                         throw RequestException::create($request, $response);
 
   80     public static function history(&$container)
 
   82         if (!is_array($container) && !$container instanceof \ArrayAccess) {
 
   83             throw new \InvalidArgumentException(
'history container must be an array or object implementing ArrayAccess');
 
   86         return function (callable $handler) use (&$container) {
 
   87             return function ($request, array $options) use ($handler, &$container) {
 
   88                 return $handler($request, $options)->then(
 
   89                     function ($value) use ($request, &$container, $options) {
 
   91                             'request'  => $request,
 
   98                     function ($reason) use ($request, &$container, $options) {
 
  100                             'request'  => $request,
 
  103                             'options'  => $options
 
  105                         return \GuzzleHttp\Promise\rejection_for($reason);
 
  125     public static function tap(callable $before = 
null, callable $after = 
null)
 
  127         return function (callable $handler) use ($before, $after) {
 
  128             return function ($request, array $options) use ($handler, $before, $after) {
 
  130                     $before($request, $options);
 
  132                 $response = $handler($request, $options);
 
  134                     $after($request, $options, $response);
 
  148         return function (callable $handler) {
 
  168     public static function retry(callable $decider, callable $delay = 
null)
 
  170         return function (callable $handler) use ($decider, $delay) {
 
  187         return function (callable $handler) use ($logger, $formatter, $logLevel) {
 
  188             return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) {
 
  189                 return $handler($request, $options)->then(
 
  190                     function ($response) use ($logger, $request, $formatter, $logLevel) {
 
  191                         $message = $formatter->
format($request, $response);
 
  192                         $logger->log($logLevel, $message);
 
  195                     function ($reason) use ($logger, $request, $formatter) {
 
  199                         $message = $formatter->
format($request, $response, $reason);
 
  200                         $logger->notice($message);
 
  201                         return \GuzzleHttp\Promise\rejection_for($reason);
 
  216         return function (callable $handler) {
 
  231         return function (callable $handler) use ($fn) {
 
  232             return function ($request, array $options) use ($handler, $fn) {
 
  233                 return $handler($fn($request), $options);
 
  248         return function (callable $handler) use ($fn) {
 
  249             return function ($request, array $options) use ($handler, $fn) {
 
  250                 return $handler($request, $options)->then($fn);