57 lines
1.7 KiB
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();
|
|
}
|
|
}
|