uuid/src/App.php

57 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace App;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Uid\Ulid;
use Symfony\Component\Uid\Uuid;
final readonly class App
{
public function __construct(
private string $base,
) {}
public function handle(Request $request): Response
{
return match ($request->getPathInfo()) {
'/v1' => new PlaintextResponse(Uuid::v1()->toString()),
'/v4' => new PlaintextResponse(Uuid::v4()->toString()),
'/v6' => new PlaintextResponse(Uuid::v6()->toString()),
'/v7' => new PlaintextResponse(Uuid::v7()->toString()),
'/ulid' => new PlaintextResponse(Ulid::generate()),
default => new PlaintextResponse(
<<<TXT
UUID/ULID Webservice
Available Endpoints:
/v1 - Generate a UUID v1 (time-based)
curl {$this->base}v1
/v4 - Generate a UUID v4 (random)
curl {$this->base}v4
/v6 - Generate a UUID v6 (reordered time-based)
curl {$this->base}v6
/v7 - Generate a UUID v7 (Unix timestamp-based)
curl {$this->base}v7
/ulid - Generate a ULID
curl {$this->base}ulid
source: https://git.hannover.ccc.de/lubiana/uuid
TXT
),
};
}
public function run(?Request $request = null): void
{
$request ??= Request::createFromGlobals();
$response = $this->handle($request);
$response->send();
}
}