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(
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);