Passed
Push — master ( c3e4c9...e46620 )
by Aleksei
02:36 queued 45s
created

SetFormat::process()   B

Complexity

Conditions 7
Paths 4

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 7.392

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 7
eloc 9
nc 4
nop 2
dl 0
loc 14
ccs 8
cts 10
cp 0.8
crap 7.392
rs 8.8333
c 2
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace roxblnfk\SmartStream\Middleware;
6
7
use Psr\Http\Message\ResponseInterface;
8
use Psr\Http\Message\ServerRequestInterface;
9
use Psr\Http\Server\MiddlewareInterface;
10
use Psr\Http\Server\RequestHandlerInterface;
11
use roxblnfk\SmartStream\Stream\BucketStream;
12
13
final class SetFormat implements MiddlewareInterface
14
{
15
    private string $format;
16
    private ?array $params;
17
    /** Replace existing format */
18
    private bool $force;
19
20 1
    public function __construct(string $format, ?array $params = [], bool $force = false)
21
    {
22 1
        $this->format = $format;
23 1
        $this->params = $params;
24 1
        $this->force = $force;
25 1
    }
26
27 1
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
28
    {
29 1
        $response = $handler->handle($request);
30 1
        $stream = $response->getBody();
31 1
        if ($stream instanceof BucketStream) {
32 1
            $data = $stream->getBucket();
33 1
            if ($data === null || !$data->isConvertable()) {
34
                return $response;
35
            }
36 1
            if (!$stream->hasBucketFormat() && !$stream->isRenderStarted() || $this->force) {
0 ignored issues
show
introduced by
Consider adding parentheses for clarity. Current Interpretation: (! $stream->hasBucketFor...rted()) || $this->force, Probably Intended Meaning: ! $stream->hasBucketForm...rted() || $this->force)
Loading history...
37 1
                return $response->withBody($stream->withBucket($data->withFormat($this->format, $this->params)));
38
            }
39
        }
40
        return $response;
41
    }
42
}
43