Completed
Branch master (e1d486)
by Pieter
02:44
created

RetrievePaginatedResourcesEvent   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 18
c 1
b 0
f 1
dl 0
loc 79
rs 10
wmc 8

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getResourceClass() 0 3 1
A getRequest() 0 3 1
A __construct() 0 5 1
A setResources() 0 10 3
A getSearchFilterRequest() 0 3 1
A getResources() 0 3 1
1
<?php
2
3
namespace W2w\Lib\Apie\Events;
4
5
use Psr\Http\Message\RequestInterface;
6
use Psr\Http\Message\ServerRequestInterface;
7
use W2w\Lib\Apie\Core\SearchFilters\SearchFilterRequest;
8
use W2w\Lib\Apie\Exceptions\InvalidReturnTypeOfApiResourceException;
9
10
/**
11
 * Event mediator for retrieving a list of resources.
12
 */
13
class RetrievePaginatedResourcesEvent
14
{
15
    /**
16
     * @var string
17
     */
18
    private $resourceClass;
19
20
    /**
21
     * @var SearchFilterRequest
22
     */
23
    private $searchFilterRequest;
24
25
    /**
26
     * @var object[]|null
27
     */
28
    private $resources;
29
30
    /**
31
     * @var RequestInterface|null
32
     */
33
    private $request;
34
35
    /**
36
     * @param string $resourceClass
37
     * @param SearchFilterRequest $searchFilterRequest
38
     * @param ServerRequestInterface|null $request
39
     */
40
    public function __construct(string $resourceClass, SearchFilterRequest $searchFilterRequest, ?ServerRequestInterface $request)
41
    {
42
        $this->resourceClass = $resourceClass;
43
        $this->searchFilterRequest = $searchFilterRequest;
44
        $this->request = $request;
45
    }
46
47
    /**
48
     * @return string
49
     */
50
    public function getResourceClass(): string
51
    {
52
        return $this->resourceClass;
53
    }
54
55
    /**
56
     * @return SearchFilterRequest
57
     */
58
    public function getSearchFilterRequest(): SearchFilterRequest
59
    {
60
        return $this->searchFilterRequest;
61
    }
62
63
    /**
64
     * @param object[] $resources
65
     */
66
    public function setResources(iterable $resources)
67
    {
68
        $resourceArray = [];
69
        foreach ($resources as $resource) {
70
            if (!$resource instanceof $this->resourceClass) {
71
                throw new InvalidReturnTypeOfApiResourceException(null, get_class($resource), $this->resourceClass);
72
            }
73
            $resourceArray[] = $resource;
74
        }
75
        $this->resources = $resourceArray;
76
    }
77
78
    /**
79
     * @return object[]|null
80
     */
81
    public function getResources(): ?array
82
    {
83
        return $this->resources;
84
    }
85
86
    /**
87
     * @return RequestInterface|null
88
     */
89
    public function getRequest(): ?RequestInterface
90
    {
91
        return $this->request;
92
    }
93
}
94