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

SiteController   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Test Coverage

Coverage 33.33%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 14
c 2
b 0
f 0
dl 0
loc 33
ccs 5
cts 15
cp 0.3333
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A index() 0 3 1
A __construct() 0 3 1
A setLocale() 0 19 1
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->getParsedBody()['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