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 / AddHostPlugin.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
AddHostPlugin.php
78 lines
1 <?php
2
3 namespace AmeliaHttp\Client\Common\Plugin;
4
5 use AmeliaHttp\Client\Common\Plugin;
6 use AmeliaPsr\Http\Message\RequestInterface;
7 use AmeliaPsr\Http\Message\UriInterface;
8 use Symfony\Component\OptionsResolver\OptionsResolver;
9
10 /**
11 * Add schema, host and port to a request. Can be set to overwrite the schema and host if desired.
12 *
13 * @author Tobias Nyholm <tobias.nyholm@gmail.com>
14 */
15 final class AddHostPlugin implements Plugin
16 {
17 /**
18 * @var UriInterface
19 */
20 private $host;
21
22 /**
23 * @var bool
24 */
25 private $replace;
26
27 /**
28 * @param UriInterface $host
29 * @param array $config {
30 *
31 * @var bool $replace True will replace all hosts, false will only add host when none is specified.
32 * }
33 */
34 public function __construct(UriInterface $host, array $config = [])
35 {
36 if ('' === $host->getHost()) {
37 throw new \LogicException('Host can not be empty');
38 }
39
40 $this->host = $host;
41
42 $resolver = new OptionsResolver();
43 $this->configureOptions($resolver);
44 $options = $resolver->resolve($config);
45
46 $this->replace = $options['replace'];
47 }
48
49 /**
50 * {@inheritdoc}
51 */
52 public function handleRequest(RequestInterface $request, callable $next, callable $first)
53 {
54 if ($this->replace || '' === $request->getUri()->getHost()) {
55 $uri = $request->getUri()
56 ->withHost($this->host->getHost())
57 ->withScheme($this->host->getScheme())
58 ->withPort($this->host->getPort())
59 ;
60
61 $request = $request->withUri($uri);
62 }
63
64 return $next($request);
65 }
66
67 /**
68 * @param OptionsResolver $resolver
69 */
70 private function configureOptions(OptionsResolver $resolver)
71 {
72 $resolver->setDefaults([
73 'replace' => false,
74 ]);
75 $resolver->setAllowedTypes('replace', 'bool');
76 }
77 }
78