PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.20
Booking for Appointments and Events Calendar – Amelia v1.2.20
2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / vendor / php-http / client-common / src / Plugin / ErrorPlugin.php
ameliabooking / vendor / php-http / client-common / src / Plugin Last commit date
AddHostPlugin.php 3 years ago AddPathPlugin.php 3 years ago AuthenticationPlugin.php 3 years ago BaseUriPlugin.php 3 years ago ContentLengthPlugin.php 3 years ago ContentTypePlugin.php 3 years ago CookiePlugin.php 3 years ago DecoderPlugin.php 3 years ago ErrorPlugin.php 3 years ago HeaderAppendPlugin.php 3 years ago HeaderDefaultsPlugin.php 3 years ago HeaderRemovePlugin.php 3 years ago HeaderSetPlugin.php 3 years ago HistoryPlugin.php 3 years ago Journal.php 3 years ago QueryDefaultsPlugin.php 3 years ago RedirectPlugin.php 3 years ago RequestMatcherPlugin.php 3 years ago RetryPlugin.php 3 years ago VersionBridgePlugin.php 3 years ago
ErrorPlugin.php
82 lines
1 <?php
2
3 namespace AmeliaHttp\Client\Common\Plugin;
4
5 use AmeliaHttp\Client\Common\Exception\ClientErrorException;
6 use AmeliaHttp\Client\Common\Exception\ServerErrorException;
7 use AmeliaHttp\Client\Common\Plugin;
8 use AmeliaPsr\Http\Message\RequestInterface;
9 use AmeliaPsr\Http\Message\ResponseInterface;
10 use Symfony\Component\OptionsResolver\OptionsResolver;
11
12 /**
13 * Throw exception when the response of a request is not acceptable.
14 *
15 * Status codes 400-499 lead to a ClientErrorException, status 500-599 to a ServerErrorException.
16 *
17 * @author Joel Wurtz <joel.wurtz@gmail.com>
18 */
19 final class ErrorPlugin implements Plugin
20 {
21 /**
22 * @var bool Whether this plugin should only throw 5XX Exceptions (default to false).
23 *
24 * If set to true 4XX Responses code will never throw an exception
25 */
26 private $onlyServerException;
27
28 /**
29 * @param array $config {
30 *
31 * @var bool only_server_exception Whether this plugin should only throw 5XX Exceptions (default to false).
32 * }
33 */
34 public function __construct(array $config = [])
35 {
36 $resolver = new OptionsResolver();
37 $resolver->setDefaults([
38 'only_server_exception' => false,
39 ]);
40 $resolver->setAllowedTypes('only_server_exception', 'bool');
41 $options = $resolver->resolve($config);
42
43 $this->onlyServerException = $options['only_server_exception'];
44 }
45
46 /**
47 * {@inheritdoc}
48 */
49 public function handleRequest(RequestInterface $request, callable $next, callable $first)
50 {
51 $promise = $next($request);
52
53 return $promise->then(function (ResponseInterface $response) use ($request) {
54 return $this->transformResponseToException($request, $response);
55 });
56 }
57
58 /**
59 * Transform response to an error if possible.
60 *
61 * @param RequestInterface $request Request of the call
62 * @param ResponseInterface $response Response of the call
63 *
64 * @throws ClientErrorException If response status code is a 4xx
65 * @throws ServerErrorException If response status code is a 5xx
66 *
67 * @return ResponseInterface If status code is not in 4xx or 5xx return response
68 */
69 protected function transformResponseToException(RequestInterface $request, ResponseInterface $response)
70 {
71 if (!$this->onlyServerException && $response->getStatusCode() >= 400 && $response->getStatusCode() < 500) {
72 throw new ClientErrorException($response->getReasonPhrase(), $request, $response);
73 }
74
75 if ($response->getStatusCode() >= 500 && $response->getStatusCode() < 600) {
76 throw new ServerErrorException($response->getReasonPhrase(), $request, $response);
77 }
78
79 return $response;
80 }
81 }
82