J. King
11 months ago
6 changed files with 165 additions and 2 deletions
@ -0,0 +1,10 @@ |
|||
<?php return [ |
|||
'code' => 404, |
|||
'mime' => "text/html; charset=utf-8", |
|||
'content' => <<< HTML_DOC |
|||
<div class="h-test"> |
|||
<span class="p-name">Ça et là</span> |
|||
<a class="u-url" href="root.html">Voir ici</a> |
|||
</div> |
|||
HTML_DOC, |
|||
]; |
@ -0,0 +1,8 @@ |
|||
<?php return [ |
|||
'code' => 302, |
|||
'mime' => "text/plain", |
|||
'content' => "", |
|||
'fields' => [ |
|||
"Location: /utf8", |
|||
], |
|||
]; |
@ -0,0 +1,10 @@ |
|||
<?php return [ |
|||
'code' => 200, |
|||
'mime' => "text/html; charset=utf-8", |
|||
'content' => <<< HTML_DOC |
|||
<div class="h-test"> |
|||
<span class="p-name">Ça et là</span> |
|||
<a class="u-url" href="root.html">Voir ici</a> |
|||
</div> |
|||
HTML_DOC, |
|||
]; |
@ -0,0 +1,81 @@ |
|||
<?php |
|||
/** @license MIT |
|||
* Copyright 2017 J. King, Dustin Wilson et al. |
|||
* See LICENSE and AUTHORS files for details */ |
|||
|
|||
declare(strict_types=1); |
|||
|
|||
namespace MensBeam\Microformats; |
|||
|
|||
require_once __DIR__."/bootstrap.php"; |
|||
|
|||
/* |
|||
|
|||
This is a so-called router for the the internal PHP Web server: |
|||
<http://php.net/manual/en/features.commandline.webserver.php> |
|||
|
|||
It is used to test feed parsing in a controlled environment, |
|||
answering specific requests used in tests with the data required |
|||
to pass the test. |
|||
|
|||
The parameters of the responses are kept in separate files, |
|||
which include the following data: |
|||
|
|||
- Response content |
|||
- Response code |
|||
- Content type |
|||
- Whether to send cache headers |
|||
- Last modified |
|||
- Any other headers |
|||
|
|||
*/ |
|||
|
|||
ignore_user_abort(false); |
|||
ob_start(); |
|||
$defaults = [ // default values for response |
|||
'code' => 200, |
|||
'content' => "", |
|||
'mime' => "application/octet-stream", |
|||
'lastMod' => time(), |
|||
'cache' => true, |
|||
'fields' => [], |
|||
]; |
|||
|
|||
$url = explode("?", $_SERVER['REQUEST_URI'])[0]; |
|||
if ($url === "/") { |
|||
$url = "/index"; |
|||
} |
|||
$base = BASE."tests".\DIRECTORY_SEPARATOR."docroot"; |
|||
$test = $base.str_replace("/", \DIRECTORY_SEPARATOR, $url).".php"; |
|||
if (!file_exists($test)) { |
|||
$response = [ |
|||
'code' => 499, |
|||
'content' => "Test '$test' missing.", |
|||
'mime' => "application/octet-stream", |
|||
'lastMod' => time(), |
|||
'cache' => true, |
|||
'fields' => [], |
|||
]; |
|||
} else { |
|||
$response = array_merge($defaults, (include $test)); |
|||
} |
|||
// set the response code |
|||
http_response_code((int) $response['code']); |
|||
// if the response has a body, set the content type and (possibly) the ETag. |
|||
if (strlen((string) $response['content'])) { |
|||
header("Content-Type: ".$response['mime']); |
|||
if ($response['cache']) { |
|||
header('ETag: "'.md5($response['content']).'"'); |
|||
} |
|||
} |
|||
// if caching is enabled, set the last-modified date |
|||
if ($response['cache']) { |
|||
header("Last-Modified: ".gmdate("D, d M Y H:i:s \G\M\T", $response['lastMod'])); |
|||
} |
|||
// set any other specified fields verbatim |
|||
foreach ($response['fields'] as $h) { |
|||
header($h); |
|||
} |
|||
// send the content |
|||
echo $response['content']; |
|||
ob_end_flush(); |
Loading…
Reference in new issue