GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — master ( 4f0198...17f4cd )
by Mehdi
12:14
created

QueryFilterBuilder::handleRequest()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 5
dl 0
loc 10
rs 10
c 0
b 0
f 0
cc 3
nc 2
nop 2
1
<?php
2
3
namespace eloquentFilter\QueryFilter\Core\FilterBuilder;
4
5
use eloquentFilter\QueryFilter\Core\EloquentBuilder\QueryBuilderWrapper;
6
use eloquentFilter\QueryFilter\Core\FilterBuilder\core\QueryFilterCore;
7
use eloquentFilter\QueryFilter\Core\HelperEloquentFilter;
8
use eloquentFilter\QueryFilter\Core\ResolverDetections;
9
use eloquentFilter\QueryFilter\Factory\QueryBuilderWrapperFactory;
10
use Illuminate\Database\Eloquent\Builder;
11
12
/**
13
 * Class QueryFilterBuilder.
14
 */
15
class QueryFilterBuilder
16
{
17
    use HelperEloquentFilter;
18
19
    /**
20
     * @var \eloquentFilter\QueryFilter\Core\FilterBuilder\core\QueryFilterCoreBuilder
21
     */
22
23
    public QueryFilterCore $queryFilterCore;
24
25
    /**
26
     * @var \eloquentFilter\QueryFilter\Core\FilterBuilder\RequestFilter
27
     */
28
29
    public RequestFilter $requestFilter;
30
31
    /**
32
     * @var \eloquentFilter\QueryFilter\Core\FilterBuilder\ResponseFilter
33
     */
34
    public ResponseFilter $responseFilter;
35
36
    /**
37
     * @var \eloquentFilter\QueryFilter\Core\EloquentBuilder\QueryBuilderWrapper
38
     */
39
    public QueryBuilderWrapper $queryBuilderWrapper;
40
41
    /**
42
     * @param \eloquentFilter\QueryFilter\Core\FilterBuilder\core\QueryFilterCore $core
43
     * @param \eloquentFilter\QueryFilter\Core\FilterBuilder\RequestFilter $requestFilter
44
     * @param \eloquentFilter\QueryFilter\Core\FilterBuilder\ResponseFilter $responseFilter
45
     */
46
    public function __construct(QueryFilterCore $core, RequestFilter $requestFilter, ResponseFilter $responseFilter)
47
    {
48
        $this->queryFilterCore = $core;
0 ignored issues
show
Documentation Bug introduced by
$core is of type eloquentFilter\QueryFilt...er\core\QueryFilterCore, but the property $queryFilterCore was declared to be of type eloquentFilter\QueryFilt...\QueryFilterCoreBuilder. Are you sure that you always receive this specific sub-class here, or does it make sense to add an instanceof check?

Our type inference engine has found a suspicous assignment of a value to a property. This check raises an issue when a value that can be of a given class or a super-class is assigned to a property that is type hinted more strictly.

Either this assignment is in error or an instanceof check should be added for that assignment.

class Alien {}

class Dalek extends Alien {}

class Plot
{
    /** @var  Dalek */
    public $villain;
}

$alien = new Alien();
$plot = new Plot();
if ($alien instanceof Dalek) {
    $plot->villain = $alien;
}
Loading history...
49
        $this->requestFilter = $requestFilter;
50
        $this->responseFilter = $responseFilter;
51
    }
52
53
    /**
54
     * @param Builder $builder
55
     * @param array|null $request
56
     * @param array|null $ignore_request
57
     * @param array|null $accept_request
58
     * @param array|null $detect_injected
59
     *
60
     * @return void
61
     */
62
    public function apply($builder, array $request = null, array $ignore_request = null, array $accept_request = null, array $detect_injected = null)
63
    {
64
        $this->queryBuilderWrapper = QueryBuilderWrapperFactory::createQueryBuilder($builder);
65
66
        if (!empty($request)) {
67
            $this->requestFilter->setRequest($request);
68
        }
69
70
        if (!config('eloquentFilter.enabled') || empty($this->requestFilter->getRequest())) {
71
            return $builder;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $builder returns the type Illuminate\Database\Eloquent\Builder which is incompatible with the documented return type void.
Loading history...
72
        }
73
74
        $this->handleRequest($ignore_request, $accept_request);
75
76
        $this->setInjectedDetections($detect_injected);
77
78
        $this->resolveDetections();
79
80
        return $this->queryBuilderWrapper->getModel()->getResponseFilter($this->responseFilter->getResponse());
81
    }
82
83
    /**
84
     * @param array|null $injected_detections
85
     * @return void
86
     */
87
    private function setInjectedDetections(?array $injected_detections): void
88
    {
89
        if (!empty($injected_detections)) {
90
            $this->queryFilterCore->setInjectedDetections($injected_detections);
91
            $this->queryFilterCore->setDetectFactory($this->queryFilterCore->getDetectorFactory($this->queryFilterCore->getDefaultDetect(), $this->queryFilterCore->getInjectedDetections()));
92
        }
93
    }
94
95
    /**
96
     * @return mixed
97
     */
98
    private function resolveDetections()
99
    {
100
        /** @see ResolverDetections */
101
        app()->bind('ResolverDetections', function () {
102
            return new ResolverDetections($this->queryBuilderWrapper->getBuilder(), $this->requestFilter->getRequest(), $this->queryFilterCore->getDetectFactory());
0 ignored issues
show
Bug introduced by
It seems like $this->requestFilter->getRequest() can also be of type null; however, parameter $request of eloquentFilter\QueryFilt...tections::__construct() does only seem to accept array, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

102
            return new ResolverDetections($this->queryBuilderWrapper->getBuilder(), /** @scrutinizer ignore-type */ $this->requestFilter->getRequest(), $this->queryFilterCore->getDetectFactory());
Loading history...
103
        });
104
105
        /** @see ResolverDetections::getResolverOut() */
106
        $responseResolver = app('ResolverDetections')->getResolverOut();
107
108
        $this->responseFilter->setResponse($responseResolver);
109
    }
110
111
    /**
112
     * @param array|null $ignore_request
113
     * @param array|null $accept_request
114
     * @return void
115
     */
116
    private function handleRequest(?array $ignore_request, ?array $accept_request): void
117
    {
118
        $serializeRequestFilter = null;
119
        if (method_exists($this->queryBuilderWrapper->getModel(), 'serializeRequestFilter') && !empty($this->requestFilter->getRequest())) {
120
            $serializeRequestFilter = $this->queryBuilderWrapper->serializeRequestFilter($this->requestFilter->getRequest());
121
        }
122
123
        $alias_list_filter = $this->queryBuilderWrapper->getAliasListFilter();
124
125
        $this->requestFilter->requestAlter($ignore_request, $accept_request, $serializeRequestFilter, $alias_list_filter, $this->queryBuilderWrapper->getModel());
126
    }
127
128
129
}
130