PluginProbe
DecaLog / 4.4.0
DecaLog v4.4.0
3.0.2 3.1.0 3.10.0 3.2.0 3.3.0 3.4.0 3.4.1 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.7.0 3.7.1 3.8.0 3.9.0 3.9.1 4.0.0 4.1.0 4.2.0 4.3.0 4.3.1 4.4.0 4.5.0 All 75 releases
decalog / includes / libraries / http / client-common / Plugin / HeaderDefaultsPlugin.php

HeaderDefaultsPlugin.php in DecaLog 4.4.0, at includes/libraries/http/client-common/Plugin/HeaderDefaultsPlugin.php

47 lines 1.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Http\Client\Common\Plugin;
6
7 use Http\Client\Common\Plugin;
8 use Http\Promise\Promise;
9 use Psr\Http\Message\RequestInterface;
10
11 /**
12 * Set header to default value if it does not exist.
13 *
14 * If a given header already exists the value wont be replaced and the request wont be changed.
15 *
16 * @author Soufiane Ghzal <sghzal@gmail.com>
17 */
18 final class HeaderDefaultsPlugin implements Plugin
19 {
20 /**
21 * @var array
22 */
23 private $headers = [];
24
25 /**
26 * @param array $headers Hashmap of header name to header value
27 */
28 public function __construct(array $headers)
29 {
30 $this->headers = $headers;
31 }
32
33 /**
34 * {@inheritdoc}
35 */
36 public function handleRequest(RequestInterface $request, callable $next, callable $first): Promise
37 {
38 foreach ($this->headers as $header => $headerValue) {
39 if (!$request->hasHeader($header)) {
40 $request = $request->withHeader($header, $headerValue);
41 }
42 }
43
44 return $next($request);
45 }
46 }
47