Passed
Push — master ( c0980a...69dd90 )
by Eugene
03:41
created

ActionSearchAbstract::getCursor()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 11
ccs 0
cts 6
cp 0
rs 9.4285
cc 2
eloc 6
nc 2
nop 0
crap 6
1
<?php
2
namespace Staticus\Middlewares;
3
4
use Staticus\Acl\Roles;
5
use Staticus\Resources\Middlewares\PrepareResourceMiddlewareAbstract;
6
use Staticus\Resources\ResourceDOInterface;
7
use Zend\Diactoros\Response\EmptyResponse;
8
use Psr\Http\Message\ResponseInterface;
9
use Psr\Http\Message\ServerRequestInterface;
10
use Staticus\Resources\File\ResourceDO;
11
use Zend\Diactoros\Response\JsonResponse;
12
use Staticus\Auth\UserInterface;
13
use Staticus\Auth\User;
14
15
abstract class ActionSearchAbstract extends MiddlewareAbstract
16
{
17
    const DEFAULT_CURSOR = 1;
18
19
    /**
20
     * @var ResourceDOInterface|ResourceDO
21
     */
22
    protected $resourceDO;
23
24
    /**
25
     * Search provider
26
     * @var mixed
27
     */
28
    protected $searcher;
29
30
    /**
31
     * @var UserInterface|User
32
     */
33
    protected $user;
34
35
    public function __construct(
36
        ResourceDOInterface $resourceDO
37
        , $generator
38
        , UserInterface $user
39
    )
40
    {
41
        $this->resourceDO = $resourceDO;
42
        $this->searcher = $generator;
43
        $this->user = $user;
44
    }
45
46
    /**
47
     * @param ServerRequestInterface $request
48
     * @param ResponseInterface $response
49
     * @param callable|null $next
50
     * @return EmptyResponse
51
     * @throws \Exception
52
     */
53
    public function __invoke(
54
        ServerRequestInterface $request,
55
        ResponseInterface $response,
56
        callable $next = null
57
    )
58
    {
59
        parent::__invoke($request, $response, $next);
60
        $this->response = $this->action();
61
62
        return $this->next();
63
    }
64
65
    /**
66
     * @return string
67
     */
68
    abstract protected function search();
69
70
    abstract protected function getQuery();
71
72
    protected function action()
73
    {
74
        $response = $this->search();
75
76
        return new JsonResponse(['found' => $response]);
77
    }
78
79
    /**
80
     * @return int
81
     */
82
    protected function getCursor()
83
    {
84
        $roles = $this->user->getRoles();
85
        if (in_array(Roles::ADMIN, $roles, true)) {
86
            $cursor = (int)PrepareResourceMiddlewareAbstract::getParamFromRequest('cursor', $this->request);
87
88
            return $cursor;
89
        }
90
91
        return self::DEFAULT_CURSOR;
92
    }
93
}