56 lines
1.4 KiB
PHP
56 lines
1.4 KiB
PHP
<?php
|
|
// HttpHeaders.php
|
|
// Created: 2022-02-08
|
|
// Updated: 2022-02-27
|
|
|
|
namespace Index\Http;
|
|
|
|
use RuntimeException;
|
|
|
|
class HttpHeaders {
|
|
private array $headers;
|
|
|
|
public function __construct(array $headers) {
|
|
$real = [];
|
|
|
|
foreach($headers as $header)
|
|
if($header instanceof HttpHeader)
|
|
$real[strtolower((string)$header->getName())] = $header;
|
|
|
|
$this->headers = $real;
|
|
}
|
|
|
|
public function hasHeader(string $name): bool {
|
|
return isset($this->headers[strtolower($name)]);
|
|
}
|
|
|
|
public function getHeaders(): array {
|
|
return array_values($this->headers);
|
|
}
|
|
|
|
public function getHeader(string $name): HttpHeader {
|
|
$name = strtolower($name);
|
|
if(!isset($this->headers[$name]))
|
|
throw new RuntimeException('No header with that name is present.');
|
|
|
|
return $this->headers[$name];
|
|
}
|
|
|
|
public function getHeaderLine(string $name): string {
|
|
if(!$this->hasHeader($name))
|
|
return '';
|
|
return (string)$this->getHeader($name);
|
|
}
|
|
|
|
public function getHeaderLines(string $name): array {
|
|
if(!$this->hasHeader($name))
|
|
return [];
|
|
return $this->getHeader($name)->getLines();
|
|
}
|
|
|
|
public function getHeaderFirstLine(string $name): string {
|
|
if(!$this->hasHeader($name))
|
|
return '';
|
|
return $this->getHeader($name)->getFirstLine();
|
|
}
|
|
}
|