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 / HeaderAppendPlugin.php

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

49 lines 1.1 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 * Append headers to the request.
13 *
14 * If the header already exists the value will be appended to the current value.
15 *
16 * This only makes sense for headers that can have multiple values like 'Forwarded'
17 *
18 * @see https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
19 *
20 * @author Soufiane Ghzal <sghzal@gmail.com>
21 */
22 final class HeaderAppendPlugin implements Plugin
23 {
24 /**
25 * @var array
26 */
27 private $headers;
28
29 /**
30 * @param array $headers Hashmap of header name to header value
31 */
32 public function __construct(array $headers)
33 {
34 $this->headers = $headers;
35 }
36
37 /**
38 * {@inheritdoc}
39 */
40 public function handleRequest(RequestInterface $request, callable $next, callable $first): Promise
41 {
42 foreach ($this->headers as $header => $headerValue) {
43 $request = $request->withAddedHeader($header, $headerValue);
44 }
45
46 return $next($request);
47 }
48 }
49