99 lines
2.0 KiB
PHP
99 lines
2.0 KiB
PHP
<?php
|
|
|
|
// SPDX-FileCopyrightText: 2004-2023 Ryan Parman, Sam Sneddon, Ryan McCue
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace SimplePie\HTTP;
|
|
|
|
/**
|
|
* HTTP Response for rax text
|
|
*
|
|
* This interface must be interoperable with Psr\Http\Message\ResponseInterface
|
|
* @see https://www.php-fig.org/psr/psr-7/#33-psrhttpmessageresponseinterface
|
|
*
|
|
* @internal
|
|
*/
|
|
final class RawTextResponse implements Response
|
|
{
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $raw_text;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $permanent_url;
|
|
|
|
/**
|
|
* @var array<non-empty-array<string>>
|
|
*/
|
|
private $headers = [];
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $requested_url;
|
|
|
|
public function __construct(string $raw_text, string $filepath)
|
|
{
|
|
$this->raw_text = $raw_text;
|
|
$this->permanent_url = $filepath;
|
|
$this->requested_url = $filepath;
|
|
}
|
|
|
|
public function get_permanent_uri(): string
|
|
{
|
|
return $this->permanent_url;
|
|
}
|
|
|
|
public function get_final_requested_uri(): string
|
|
{
|
|
return $this->requested_url;
|
|
}
|
|
|
|
public function get_status_code(): int
|
|
{
|
|
return 200;
|
|
}
|
|
|
|
public function get_headers(): array
|
|
{
|
|
return $this->headers;
|
|
}
|
|
|
|
public function has_header(string $name): bool
|
|
{
|
|
return isset($this->headers[strtolower($name)]);
|
|
}
|
|
|
|
public function get_header(string $name): array
|
|
{
|
|
return isset($this->headers[strtolower($name)]) ? $this->headers[$name] : [];
|
|
}
|
|
|
|
public function with_header(string $name, $value)
|
|
{
|
|
$new = clone $this;
|
|
|
|
$newHeader = [
|
|
strtolower($name) => (array) $value,
|
|
];
|
|
$new->headers = $newHeader + $this->headers;
|
|
|
|
return $new;
|
|
}
|
|
|
|
public function get_header_line(string $name): string
|
|
{
|
|
return isset($this->headers[strtolower($name)]) ? implode(", ", $this->headers[$name]) : '';
|
|
}
|
|
|
|
public function get_body_content(): string
|
|
{
|
|
return $this->raw_text;
|
|
}
|
|
}
|