Passed
Pull Request — master (#335)
by Dmitriy
03:24
created

SiteController::setLocale()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 10
c 0
b 0
f 0
nc 1
nop 3
dl 0
loc 19
ccs 0
cts 10
cp 0
crap 2
rs 9.9332
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Controller;
6
7
use Psr\Http\Message\ResponseFactoryInterface;
8
use Psr\Http\Message\ResponseInterface;
9
use Psr\Http\Message\ServerRequestInterface;
10
use Yiisoft\Cookies\Cookie;
11
use Yiisoft\Cookies\CookieCollection;
12
use Yiisoft\Router\UrlGeneratorInterface;
13
use Yiisoft\Yii\View\ViewRenderer;
14
15
class SiteController
16
{
17
    private ViewRenderer $viewRenderer;
18
19 1
    public function __construct(ViewRenderer $viewRenderer)
20
    {
21 1
        $this->viewRenderer = $viewRenderer->withController($this);
22 1
    }
23
24 1
    public function index(): ResponseInterface
25
    {
26 1
        return $this->viewRenderer->render('index');
27
    }
28
29
    public function setLocale(
30
        ResponseFactoryInterface $responseFactory,
31
        UrlGeneratorInterface $urlGenerator,
32
        ServerRequestInterface $request
33
    ): ResponseInterface {
34
        $locale = $request->getQueryParams()['locale'];
35
36
        $response = $responseFactory
37
            ->createResponse(302);
38
39
        $cookies = CookieCollection::fromArray($request->getCookieParams());
40
        $cookies->add(new Cookie('locale', $locale));
41
42
        $response = $cookies->setToResponse($response);
43
44
        return $response
45
            ->withHeader(
46
                'Location',
47
                $urlGenerator->generate('site/index')
48
            );
49
    }
50
}
51