17 use Psr\Http\Message\MessageInterface;
18 use Psr\Http\Message\StreamInterface;
83 $clonedObject = clone $this;
84 $clonedObject->protocolVersion = $version;
128 return isset($this->lowercasedHeaderNames[strtolower($name)]);
150 $header = $this->lowercasedHeaderNames[strtolower($name)];
151 $headerValue = $this->headers[$header];
152 if (is_array($headerValue)) {
155 return [$headerValue];
180 if (empty($headerValue)) {
183 return implode(
',', $headerValue);
203 if (is_string($value)) {
208 throw new \InvalidArgumentException(
'Invalid header value for header "' . $name .
'". The value must be a string or an array of strings.', 1436717266);
213 $lowercasedHeaderName = strtolower($name);
215 $clonedObject = clone $this;
216 $clonedObject->headers[$name] = $value;
217 $clonedObject->lowercasedHeaderNames[$lowercasedHeaderName] = $name;
218 return $clonedObject;
239 if (is_string($value)) {
243 throw new \InvalidArgumentException(
'Invalid header value for header "' . $name .
'". The header value must be a string or array of strings', 1436717267);
250 $name = $this->lowercasedHeaderNames[strtolower($name)];
251 $clonedObject = clone $this;
252 $clonedObject->headers[$name] = array_merge($this->headers[$name], $value);
253 return $clonedObject;
274 $lowercasedHeader = strtolower($name);
275 $name = $this->lowercasedHeaderNames[$lowercasedHeader];
276 $clonedObject = clone $this;
277 unset($clonedObject->headers[$name], $clonedObject->lowercasedHeaderNames[$lowercasedHeader]);
278 return $clonedObject;
306 $clonedObject = clone $this;
307 $clonedObject->body =
$body;
308 return $clonedObject;
319 foreach (
$headers as $name => $headerValues) {
322 array_walk($headerValues,
function ($value, $key,
Message $messageObject) {
324 throw new \InvalidArgumentException(
'Invalid header value for header "' . $key .
'"', 1436717268);
341 foreach ($originalHeaders as $header => $value) {
342 if (!is_string($header) || (!is_array($value) && !is_string($value))) {
345 if (!is_array($value)) {
348 $headerNames[strtolower($header)] = $header;
362 return array_reduce($data,
function ($original, $item) {
363 return is_string($item) ? $original :
false;
376 array_walk($values,
function ($value, $key,
Message $messageObject) {
378 throw new \InvalidArgumentException(
'Invalid header value for header "' . $key .
'"', 1436717269);
399 public function filter($value)
401 $value = (string)$value;
402 $length = strlen($value);
404 for ($i = 0; $i < $length; $i += 1) {
405 $ascii = ord($value[$i]);
409 $lf = ord($value[$i + 1]);
410 $ws = ord($value[$i + 2]);
411 if ($lf === 10 && in_array($ws, [9, 32],
true)) {
412 $string .= $value[$i] . $value[$i + 1];
423 if (($ascii < 32 && $ascii !== 9) || $ascii === 127 || $ascii > 254) {
427 $string .= $value[$i];
442 if (!preg_match(
'/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/', $name)) {
443 throw new \InvalidArgumentException(
'Invalid header name, given "' . $name .
'"', 1436717270);
460 $value = (string)$value;
463 if (strpbrk($value,
"\r\n") !==
false) {
467 $length = strlen($value);
468 for ($i = 0; $i < $length; $i += 1) {
469 $ascii = ord($value[$i]);
478 if (($ascii < 32 && !in_array($ascii, [9, 10, 13],
true)) || $ascii === 127 || $ascii > 254) {