friendship ended with social-app. php is my new best friend
1<?php
2declare(strict_types=1);
3
4namespace Lcobucci\JWT\Encoding;
5
6use DateTimeImmutable;
7use Lcobucci\JWT\ClaimsFormatter;
8use Lcobucci\JWT\Token\RegisteredClaims;
9
10use function array_key_exists;
11
12final class MicrosecondBasedDateConversion implements ClaimsFormatter
13{
14 /** @inheritdoc */
15 public function formatClaims(array $claims): array
16 {
17 foreach (RegisteredClaims::DATE_CLAIMS as $claim) {
18 if (! array_key_exists($claim, $claims)) {
19 continue;
20 }
21
22 $claims[$claim] = $this->convertDate($claims[$claim]);
23 }
24
25 return $claims;
26 }
27
28 private function convertDate(DateTimeImmutable $date): int|float
29 {
30 if ($date->format('u') === '000000') {
31 return (int) $date->format('U');
32 }
33
34 return (float) $date->format('U.u');
35 }
36}