-
Notifications
You must be signed in to change notification settings - Fork 0
/
StaticPageMiddleware.php
40 lines (35 loc) · 1.2 KB
/
StaticPageMiddleware.php
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
<?php
namespace App\Middleware;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
class StaticPageMiddleware
{
/**
* Static Page Invokable Middleware
*
* @param ServerRequestInterface $request PSR7 request object
* @param ResponseInterface $response PSR7 response object
* @param callable $next Next middleware callable
*
* @return ResponseInterface PSR7 response object
*/
public function __invoke(Request $request, Response $response, $next)
{
$response = $next($request, $response);
if (!$request->isGet() || $response->getStatusCode() != 200) {
return $response;
}
$comment = '<!-- static page generated ' . date('c') . ' -->';
$content = (string)$response->getBody() . $comment;
$uri = $request->getUri();
$path = $uri->getBasePath() . $uri->getPath();
if (substr($path, -1) == '/') {
$path.= 'index.html';
}
$path = $_SERVER['DOCUMENT_ROOT'] . $path;
if (!file_exists($path)) {
file_put_contents($path, $content);
}
return $response;
}
}