Completed
Pull Request — master (#1)
by Woody
27:07 queued 01:07
created

RedirectResponder   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 100%
Metric Value
wmc 3
lcom 0
cbo 2
dl 0
loc 36
ccs 10
cts 10
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 17 2
A hasRedirect() 0 5 1
1
<?php
2
3
namespace Equip\Responder;
4
5
use Psr\Http\Message\ServerRequestInterface;
6
use Psr\Http\Message\ResponseInterface;
7
use Equip\Adr\PayloadInterface;
8
use Equip\Adr\ResponderInterface;
9
10
class RedirectResponder implements ResponderInterface
11
{
12
    /**
13
     * @inheritDoc
14
     */
15 5
    public function __invoke(
16
        ServerRequestInterface $request,
17
        ResponseInterface $response,
18
        PayloadInterface $payload
19
    ) {
20 5
        if ($this->hasRedirect($payload)) {
21 1
            $messages = $payload->getMessages() + [
22 1
                'status' => 302,
23
            ];
24
25
            return $response
26 1
                ->withStatus($messages['status'])
27 1
                ->withHeader('Location', $messages['redirect']);
28
        }
29
30 4
        return $response;
31
    }
32
33
    /**
34
     * Check if the payload contains a redirect
35
     *
36
     * @param PayloadInterface $payload
37
     *
38
     * @return boolean
39
     */
40 5
    private function hasRedirect(PayloadInterface $payload)
41
    {
42 5
        $messages = $payload->getMessages();
43 5
        return !empty($messages['redirect']);
44
    }
45
}
46