Files
michaelschiemer/src/Framework/Display/ValueObjectFormatters/ByteFormatter.php
Michael Schiemer 36ef2a1e2c
Some checks failed
🚀 Build & Deploy Image / Determine Build Necessity (push) Failing after 10m14s
🚀 Build & Deploy Image / Build Runtime Base Image (push) Has been skipped
🚀 Build & Deploy Image / Build Docker Image (push) Has been skipped
🚀 Build & Deploy Image / Run Tests & Quality Checks (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Staging (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Production (push) Has been skipped
Security Vulnerability Scan / Check for Dependency Changes (push) Failing after 11m25s
Security Vulnerability Scan / Composer Security Audit (push) Has been cancelled
fix: Gitea Traefik routing and connection pool optimization
- Remove middleware reference from Gitea Traefik labels (caused routing issues)
- Optimize Gitea connection pool settings (MAX_IDLE_CONNS=30, authentication_timeout=180s)
- Add explicit service reference in Traefik labels
- Fix intermittent 504 timeouts by improving PostgreSQL connection handling

Fixes Gitea unreachability via git.michaelschiemer.de
2025-11-09 14:46:15 +01:00

65 lines
2.1 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Framework\Display\ValueObjectFormatters;
use App\Framework\Console\ConsoleColor;
use App\Framework\Console\ConsoleStyle;
use App\Framework\Core\ValueObjects\Byte;
use App\Framework\Display\ValueObjects\DisplayOptions;
/**
* Formatter for Byte Value Objects with human-readable formatting
*/
final readonly class ByteFormatter implements ValueObjectFormatterInterface
{
public function supports(object $valueObject): bool
{
return $valueObject instanceof Byte;
}
public function formatConsole(object $valueObject, DisplayOptions $options): string
{
if (! $valueObject instanceof Byte) {
return (string) $valueObject;
}
$humanReadable = $valueObject->toHumanReadable(2);
$bytes = $valueObject->toBytes();
// Color-code by size range
$color = match (true) {
$bytes < 1024 => ConsoleColor::WHITE, // Bytes
$bytes < 1024 * 1024 => ConsoleColor::GREEN, // KB
$bytes < 1024 * 1024 * 1024 => ConsoleColor::YELLOW, // MB
$bytes < 1024 * 1024 * 1024 * 1024 => ConsoleColor::BRIGHT_YELLOW, // GB
default => ConsoleColor::BRIGHT_RED, // TB+
};
return ConsoleStyle::create(color: $color)->apply($humanReadable);
}
public function formatHtml(object $valueObject, DisplayOptions $options): string
{
if (! $valueObject instanceof Byte) {
return htmlspecialchars((string) $valueObject);
}
$humanReadable = $valueObject->toHumanReadable(2);
$bytes = $valueObject->toBytes();
// CSS class based on size range
$cssClass = match (true) {
$bytes < 1024 => 'display-byte-size',
$bytes < 1024 * 1024 => 'display-kb-size',
$bytes < 1024 * 1024 * 1024 => 'display-mb-size',
$bytes < 1024 * 1024 * 1024 * 1024 => 'display-gb-size',
default => 'display-tb-size',
};
return '<span class="' . $cssClass . '">' . htmlspecialchars($humanReadable) . '</span>';
}
}