Diff: STRATO-apps/wordpress_03/app/wp-includes/Requests/src/Response/Headers.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* Case-insensitive dictionary, suitable for HTTP headers
4
+
*
5
+
* @package Requests
6
+
*/
7
+
8
+
namespace WpOrg\Requests\Response;
9
+
10
+
use WpOrg\Requests\Exception;
11
+
use WpOrg\Requests\Exception\InvalidArgument;
12
+
use WpOrg\Requests\Utility\CaseInsensitiveDictionary;
13
+
use WpOrg\Requests\Utility\FilteredIterator;
14
+
15
+
/**
16
+
* Case-insensitive dictionary, suitable for HTTP headers
17
+
*
18
+
* @package Requests
19
+
*/
20
+
class Headers extends CaseInsensitiveDictionary {
21
+
/**
22
+
* Get the given header
23
+
*
24
+
* Unlike {@see \WpOrg\Requests\Response\Headers::getValues()}, this returns a string. If there are
25
+
* multiple values, it concatenates them with a comma as per RFC2616.
26
+
*
27
+
* Avoid using this where commas may be used unquoted in values, such as
28
+
* Set-Cookie headers.
29
+
*
30
+
* @param string $offset Name of the header to retrieve.
31
+
* @return string|null Header value
32
+
*/
33
+
public function offsetGet($offset) {
34
+
if (is_string($offset)) {
35
+
$offset = strtolower($offset);
36
+
}
37
+
38
+
if (!isset($this->data[$offset])) {
39
+
return null;
40
+
}
41
+
42
+
return $this->flatten($this->data[$offset]);
43
+
}
44
+
45
+
/**
46
+
* Set the given item
47
+
*
48
+
* @param string $offset Item name
49
+
* @param string $value Item value
50
+
*
51
+
* @throws \WpOrg\Requests\Exception On attempting to use dictionary as list (`invalidset`)
52
+
*/
53
+
public function offsetSet($offset, $value) {
54
+
if ($offset === null) {
55
+
throw new Exception('Object is a dictionary, not a list', 'invalidset');
56
+
}
57
+
58
+
if (is_string($offset)) {
59
+
$offset = strtolower($offset);
60
+
}
61
+
62
+
if (!isset($this->data[$offset])) {
63
+
$this->data[$offset] = [];
64
+
}
65
+
66
+
$this->data[$offset][] = $value;
67
+
}
68
+
69
+
/**
70
+
* Get all values for a given header
71
+
*
72
+
* @param string $offset Name of the header to retrieve.
73
+
* @return array|null Header values
74
+
*
75
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not valid as an array key.
76
+
*/
77
+
public function getValues($offset) {
78
+
if (!is_string($offset) && !is_int($offset)) {
79
+
throw InvalidArgument::create(1, '$offset', 'string|int', gettype($offset));
80
+
}
81
+
82
+
if (is_string($offset)) {
83
+
$offset = strtolower($offset);
84
+
}
85
+
86
+
if (!isset($this->data[$offset])) {
87
+
return null;
88
+
}
89
+
90
+
return $this->data[$offset];
91
+
}
92
+
93
+
/**
94
+
* Flattens a value into a string
95
+
*
96
+
* Converts an array into a string by imploding values with a comma, as per
97
+
* RFC2616's rules for folding headers.
98
+
*
99
+
* @param string|array $value Value to flatten
100
+
* @return string Flattened value
101
+
*
102
+
* @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not a string or an array.
103
+
*/
104
+
public function flatten($value) {
105
+
if (is_string($value)) {
106
+
return $value;
107
+
}
108
+
109
+
if (is_array($value)) {
110
+
return implode(',', $value);
111
+
}
112
+
113
+
throw InvalidArgument::create(1, '$value', 'string|array', gettype($value));
114
+
}
115
+
116
+
/**
117
+
* Get an iterator for the data
118
+
*
119
+
* Converts the internally stored values to a comma-separated string if there is more
120
+
* than one value for a key.
121
+
*
122
+
* @return \ArrayIterator
123
+
*/
124
+
public function getIterator() {
125
+
return new FilteredIterator($this->data, [$this, 'flatten']);
126
+
}
127
+
}
128
+