Open Monograph Press  3.3.0
Middleware.php
1 <?php
2 namespace GuzzleHttp;
3 
9 use Psr\Log\LoggerInterface;
10 
14 final class Middleware
15 {
24  public static function cookies()
25  {
26  return function (callable $handler) {
27  return function ($request, array $options) use ($handler) {
28  if (empty($options['cookies'])) {
29  return $handler($request, $options);
30  } elseif (!($options['cookies'] instanceof CookieJarInterface)) {
31  throw new \InvalidArgumentException('cookies must be an instance of GuzzleHttp\Cookie\CookieJarInterface');
32  }
33  $cookieJar = $options['cookies'];
34  $request = $cookieJar->withCookieHeader($request);
35  return $handler($request, $options)
36  ->then(
37  function ($response) use ($cookieJar, $request) {
38  $cookieJar->extractCookies($request, $response);
39  return $response;
40  }
41  );
42  };
43  };
44  }
45 
52  public static function httpErrors()
53  {
54  return function (callable $handler) {
55  return function ($request, array $options) use ($handler) {
56  if (empty($options['http_errors'])) {
57  return $handler($request, $options);
58  }
59  return $handler($request, $options)->then(
60  function (ResponseInterface $response) use ($request) {
61  $code = $response->getStatusCode();
62  if ($code < 400) {
63  return $response;
64  }
65  throw RequestException::create($request, $response);
66  }
67  );
68  };
69  };
70  }
71 
80  public static function history(&$container)
81  {
82  if (!is_array($container) && !$container instanceof \ArrayAccess) {
83  throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess');
84  }
85 
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) {
90  $container[] = [
91  'request' => $request,
92  'response' => $value,
93  'error' => null,
94  'options' => $options
95  ];
96  return $value;
97  },
98  function ($reason) use ($request, &$container, $options) {
99  $container[] = [
100  'request' => $request,
101  'response' => null,
102  'error' => $reason,
103  'options' => $options
104  ];
105  return \GuzzleHttp\Promise\rejection_for($reason);
106  }
107  );
108  };
109  };
110  }
111 
125  public static function tap(callable $before = null, callable $after = null)
126  {
127  return function (callable $handler) use ($before, $after) {
128  return function ($request, array $options) use ($handler, $before, $after) {
129  if ($before) {
130  $before($request, $options);
131  }
132  $response = $handler($request, $options);
133  if ($after) {
134  $after($request, $options, $response);
135  }
136  return $response;
137  };
138  };
139  }
140 
146  public static function redirect()
147  {
148  return function (callable $handler) {
149  return new RedirectMiddleware($handler);
150  };
151  }
152 
168  public static function retry(callable $decider, callable $delay = null)
169  {
170  return function (callable $handler) use ($decider, $delay) {
171  return new RetryMiddleware($decider, $handler, $delay);
172  };
173  }
174 
185  public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = 'info' /* \Psr\Log\LogLevel::INFO */)
186  {
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);
193  return $response;
194  },
195  function ($reason) use ($logger, $request, $formatter) {
196  $response = $reason instanceof RequestException
197  ? $reason->getResponse()
198  : null;
199  $message = $formatter->format($request, $response, $reason);
200  $logger->notice($message);
201  return \GuzzleHttp\Promise\rejection_for($reason);
202  }
203  );
204  };
205  };
206  }
207 
214  public static function prepareBody()
215  {
216  return function (callable $handler) {
217  return new PrepareBodyMiddleware($handler);
218  };
219  }
220 
229  public static function mapRequest(callable $fn)
230  {
231  return function (callable $handler) use ($fn) {
232  return function ($request, array $options) use ($handler, $fn) {
233  return $handler($fn($request), $options);
234  };
235  };
236  }
237 
246  public static function mapResponse(callable $fn)
247  {
248  return function (callable $handler) use ($fn) {
249  return function ($request, array $options) use ($handler, $fn) {
250  return $handler($request, $options)->then($fn);
251  };
252  };
253  }
254 }
GuzzleHttp\Exception\RequestException
Definition: vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:12
GuzzleHttp
Definition: paymethod/paypal/vendor/guzzlehttp/guzzle/src/Client.php:2
GuzzleHttp\Middleware\log
static log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel='info')
Definition: Middleware.php:185
GuzzleHttp\Middleware\cookies
static cookies()
Definition: Middleware.php:24
GuzzleHttp\Exception\RequestException\getResponse
getResponse()
Definition: vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:172
Psr\Http\Message\ResponseInterface\getStatusCode
getStatusCode()
GuzzleHttp\Middleware
Definition: Middleware.php:14
GuzzleHttp\Middleware\retry
static retry(callable $decider, callable $delay=null)
Definition: Middleware.php:168
GuzzleHttp\MessageFormatter
Definition: vendor/guzzlehttp/guzzle/src/MessageFormatter.php:35
GuzzleHttp\Psr7
Definition: AppendStream.php:2
Psr\Http\Message\ResponseInterface
Definition: vendor/psr/http-message/src/ResponseInterface.php:20
GuzzleHttp\Middleware\redirect
static redirect()
Definition: Middleware.php:146
GuzzleHttp\MessageFormatter\format
format(RequestInterface $request, ResponseInterface $response=null, \Exception $error=null)
Definition: vendor/guzzlehttp/guzzle/src/MessageFormatter.php:69
GuzzleHttp\Middleware\tap
static tap(callable $before=null, callable $after=null)
Definition: Middleware.php:125
GuzzleHttp\PrepareBodyMiddleware
Definition: PrepareBodyMiddleware.php:12
GuzzleHttp\RedirectMiddleware
Definition: RedirectMiddleware.php:18
GuzzleHttp\RetryMiddleware
Definition: RetryMiddleware.php:14
GuzzleHttp\Middleware\mapResponse
static mapResponse(callable $fn)
Definition: Middleware.php:246
GuzzleHttp\Cookie\CookieJarInterface
Definition: vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php:17
GuzzleHttp\Middleware\httpErrors
static httpErrors()
Definition: Middleware.php:52
GuzzleHttp\Middleware\prepareBody
static prepareBody()
Definition: Middleware.php:214
GuzzleHttp\Promise\RejectedPromise
Definition: guzzlehttp/promises/src/RejectedPromise.php:10
GuzzleHttp\Middleware\history
static history(&$container)
Definition: Middleware.php:80
GuzzleHttp\Middleware\mapRequest
static mapRequest(callable $fn)
Definition: Middleware.php:229