Skip to content

Commit 0bc6c87

Browse files
committed
feat: Add response to CacheRuleEvent to check also for example status code
1 parent 21697e6 commit 0bc6c87

File tree

4 files changed

+37
-2
lines changed

4 files changed

+37
-2
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace SFC\Staticfilecache\Cache\Listener;
6+
7+
use SFC\Staticfilecache\Event\CacheRuleEvent;
8+
9+
class ValidResponseCodeListener
10+
{
11+
public function __invoke(CacheRuleEvent $event): void
12+
{
13+
$validStatusCodes = [200];
14+
$responseStatusCode = $event->getResponse()->getStatusCode();
15+
16+
if (!in_array($responseStatusCode, $validStatusCodes)) {
17+
$event->addExplanation(__CLASS__, 'The Status code ist not valid');
18+
$event->setSkipProcessing(true);
19+
}
20+
}
21+
}

Classes/Event/CacheRuleEvent.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,28 @@
44

55
namespace SFC\Staticfilecache\Event;
66

7+
use Psr\Http\Message\ResponseInterface;
78
use Psr\Http\Message\ServerRequestInterface;
89

910
final class CacheRuleEvent implements CacheRuleEventInterface
1011
{
1112
public function __construct(
1213
readonly private ServerRequestInterface $request,
1314
private array $explanation,
14-
private bool $skipProcessing
15+
private bool $skipProcessing,
16+
readonly private ResponseInterface $response,
1517
) {}
1618

1719
public function getRequest(): ServerRequestInterface
1820
{
1921
return $this->request;
2022
}
2123

24+
public function getResponse(): ResponseInterface
25+
{
26+
return $this->response;
27+
}
28+
2229
public function getExplanation(): array
2330
{
2431
return $this->explanation;

Classes/Middleware/PrepareMiddleware.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
4141
$explanation = [];
4242
$skipProcessing = false;
4343

44-
$event = new CacheRuleEvent($request, $explanation, $skipProcessing);
44+
$event = new CacheRuleEvent($request, $explanation, $skipProcessing, $response);
4545
$this->eventDispatcher->dispatch($event);
4646

4747
if (!$event->isSkipProcessing()) {

Configuration/Services.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@ services:
4646
identifier: 'ValidUriListenerFallback'
4747
event: SFC\Staticfilecache\Event\CacheRuleFallbackEvent
4848

49+
SFC\Staticfilecache\Cache\Listener\ValidResponseCodeListener:
50+
tags:
51+
- name: event.listener
52+
identifier: 'ValidResponseCodeListener'
53+
event: SFC\Staticfilecache\Event\CacheRuleEvent
54+
before: 'ForceStaticCacheListener'
55+
4956
SFC\Staticfilecache\Cache\Listener\SolrIndexingProcessListener:
5057
tags:
5158
- name: event.listener

0 commit comments

Comments
 (0)