CdnCacheControlHeaderSetter   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 9
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 4
c 1
b 0
f 0
dl 0
loc 9
rs 10
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 5 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace BEAR\QueryRepository;
6
7
use BEAR\Resource\ResourceObject;
8
9
use function sprintf;
10
11
/**
12
 * @see https://www.ietf.org/archive/id/draft-cdn-control-header-01.html
13
 * @see https://blog.cloudflare.com/cdn-cache-control/
14
 */
15
final class CdnCacheControlHeaderSetter implements CdnCacheControlHeaderSetterInterface
16
{
17
    private const CDN_CACHE_CONTROL_HEADER = Header::CDN_CACHE_CONTROL;
18
19
    public function __invoke(ResourceObject $ro, int|null $sMaxAge): void
20
    {
21
        $sMaxAge ??= 10;
22
        if (! isset($ro->headers[self::CDN_CACHE_CONTROL_HEADER])) {
23
            $ro->headers[self::CDN_CACHE_CONTROL_HEADER] = sprintf('max-age=%s stale-while-revalidate=10', (string) $sMaxAge);
24
        }
25
    }
26
}
27