PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6.1
GiveWP – Donation Plugin and Fundraising Platform v4.16.6.1
4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / vendor / vendor-prefixed / stellarwp / licensing-api-client / src / Http / RequestHeaderCollection.php
give / vendor / vendor-prefixed / stellarwp / licensing-api-client / src / Http Last commit date
Factories 3 months ago ApiUri.php 3 months ago ApiVersion.php 3 months ago AuthContext.php 3 months ago AuthState.php 3 months ago JsonDecoder.php 3 months ago RequestBuilder.php 3 months ago RequestExecutor.php 3 months ago RequestHeaderCollection.php 3 months ago RetryPolicy.php 3 months ago
RequestHeaderCollection.php
138 lines
1 <?php declare(strict_types=1);
2
3 namespace Give\Vendors\LiquidWeb\LicensingApiClient\Http;
4
5 use Give\Vendors\LiquidWeb\LicensingApiClient\Tracing\TraceContext;
6 use Give\Vendors\LiquidWeb\LicensingApiClient\Tracing\TraceParent;
7
8 /**
9 * Immutable request-header state shared across resource views.
10 *
11 * @phpstan-import-type HeaderValue from RequestBuilder
12 */
13 final class RequestHeaderCollection
14 {
15 /**
16 * @var array<string, array{name: string, value: HeaderValue}>
17 */
18 private array $headers;
19
20 /**
21 * @param array<string, HeaderValue> $headers
22 */
23 public function __construct(array $headers = []) {
24 $this->headers = $this->normalizeHeaders($headers);
25 }
26
27 /**
28 * @return array<string, HeaderValue>
29 */
30 public function all(): array {
31 $headers = [];
32
33 foreach ($this->headers as $entry) {
34 $headers[$entry['name']] = $entry['value'];
35 }
36
37 return $headers;
38 }
39
40 public function withoutHeaders(): self {
41 if ($this->headers === []) {
42 return $this;
43 }
44
45 return new self();
46 }
47
48 /**
49 * @param array<string, HeaderValue> $headers
50 */
51 public function withHeaders(array $headers): self {
52 if ($headers === []) {
53 return $this;
54 }
55
56 $merged = array_replace($this->headers, $this->normalizeHeaders($headers));
57
58 if ($merged === $this->headers) {
59 return $this;
60 }
61
62 return self::fromNormalized($merged);
63 }
64
65 public function withTraceParent(TraceParent $traceParent): self {
66 $normalized = $this->headers;
67 $normalized['traceparent'] = [
68 'name' => 'traceparent',
69 'value' => $traceParent->header(),
70 ];
71
72 unset($normalized['tracestate']);
73
74 if ($normalized === $this->headers) {
75 return $this;
76 }
77
78 return self::fromNormalized($normalized);
79 }
80
81 public function withTraceContext(TraceContext $traceContext): self {
82 $normalized = array_replace($this->headers, $this->normalizeHeaders($traceContext->headers()));
83
84 if ($traceContext->traceState() === null) {
85 unset($normalized['tracestate']);
86 }
87
88 if ($normalized === $this->headers) {
89 return $this;
90 }
91
92 return self::fromNormalized($normalized);
93 }
94
95 /**
96 * @param array<string, HeaderValue> $headers
97 *
98 * @return array<string, HeaderValue>
99 */
100 public function merge(array $headers): array {
101 return $this->withHeaders($headers)->all();
102 }
103
104 /**
105 * @param array<string, array{name: string, value: HeaderValue}> $headers
106 */
107 private static function fromNormalized(array $headers): self {
108 $self = new self();
109 $self->headers = $headers;
110
111 return $self;
112 }
113
114 /**
115 * @param array<string, HeaderValue> $headers
116 *
117 * @return array<string, array{name: string, value: HeaderValue}>
118 */
119 private function normalizeHeaders(array $headers): array {
120 $normalized = [];
121
122 foreach ($headers as $name => $value) {
123 $name = trim((string) $name);
124
125 if ($name === '') {
126 continue;
127 }
128
129 $normalized[strtolower($name)] = [
130 'name' => $name,
131 'value' => $value,
132 ];
133 }
134
135 return $normalized;
136 }
137 }
138