1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
<?php
namespace ICanBoogie\HTTP;
class RedirectResponse extends Response
{
public function __construct($url, $status = Status::FOUND, array $headers = [])
{
parent::__construct
(
function(Response $response) {
$location = $response->location;
$title = \ICanBoogie\escape($location);
echo <<<EOT
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="1;url={$location}" />
<title>Redirecting to {$title}</title>
</head>
<body>
Redirecting to <a href="{$location}">{$title}</a>.
</body>
</html>
EOT
; // @codeCoverageIgnore
},
$status, [ 'Location' => $url ] + $headers
);
if (!$this->status->is_redirect)
{
throw new StatusCodeNotValid($this->status->code, "The HTTP status code is not a redirect: {$status}.");
}
}
}