<?php
declare(strict_types=1);
namespace BcaB2c\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
class HealthcheckController
{
/**
* @param Request $request
*
* @return JsonResponse
*/
public function __invoke(Request $request): JsonResponse
{
return new JsonResponse($this->audit($request->server->get('REQUEST_TIME_FLOAT'), microtime(true)));
}
private function audit(float $reqTime, float $resTime): array
{
$status = 'pass';
$elapsed = $resTime - $reqTime;
$duration = sprintf(
'%02d:%02d:%02d.%06d',
number_format($elapsed / 3600, 0),
number_format($elapsed / 60, 0),
number_format($elapsed, 0),
(int) (($elapsed - number_format($elapsed, 0)) * 1000000)
);
if ($elapsed > 10) {
$status = 'warn';
}
return [
'status' => $status,
'duration' => $duration,
'description' => 'API BCA-B2C',
'version' => 'v1',
];
}
}