| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- <?php
- declare(strict_types=1);
- use Monolog\Formatter\JsonFormatter;
- use Monolog\Handler\StreamHandler;
- use Monolog\Logger;
- use Psr\Http\Message\ResponseInterface as Response;
- use Psr\Http\Message\ServerRequestInterface as Request;
- use Slim\Factory\AppFactory;
- require __DIR__ . '/../vendor/autoload.php';
- $settings = require __DIR__ . '/../config/settings.php';
- $logger = new Logger('api');
- $handler = new StreamHandler('php://stdout', $settings['log_level']);
- $handler->setFormatter(new JsonFormatter());
- $logger->pushHandler($handler);
- $app = AppFactory::create();
- $app->addRoutingMiddleware();
- $app->addBodyParsingMiddleware();
- $app->addErrorMiddleware($settings['app_env'] === 'development', true, true, $logger);
- $app->get('/healthz', function (Request $request, Response $response): Response {
- // Stub healthcheck. Later milestones extend this with `db` and `jobs` fields.
- $response->getBody()->write((string) json_encode(['status' => 'ok']));
- return $response->withHeader('Content-Type', 'application/json');
- });
- $app->map(
- ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
- '/{routes:.+}',
- function (Request $request, Response $response): Response {
- $response->getBody()->write((string) json_encode(['error' => 'not_found']));
- return $response
- ->withHeader('Content-Type', 'application/json')
- ->withStatus(404);
- }
- );
- $app->run();
|