Completed
Push — master ( beb3fd...91a3d1 )
by John
02:45
created

ResourceAPIResponseDataFactory   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 1
dl 0
loc 26
ccs 6
cts 6
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
toAPIResponseData() 0 1 ?
A multipleToAPIResponseData() 0 10 2
1
<?php
2
namespace LunixREST\Server\Router\Endpoint\ResourceEndpoint;
3
4
use LunixREST\Server\APIResponse\APIResponseData;
5
use LunixREST\Server\Router\Endpoint\ResourceEndpoint\Exceptions\UnableToCreateAPIResponseDataException;
6
7
/**
8
 * abstract class ResourceAPIResponseDataFactory
9
 * @package LunixREST\Server\Router\Endpoint\ResourceEndpoint
10
 */
11
abstract class ResourceAPIResponseDataFactory {
12
13
    /**
14
     * @param null|Resource $resource
15
     * @return APIResponseData
16
     * @throws UnableToCreateAPIResponseDataException
17
     */
18
    abstract public function toAPIResponseData(?Resource $resource): APIResponseData;
19
20
    /**
21
     * Uses above method for each resource, extracting the data into an array, creating a new APIResponseData from that array.
22
     * @param null|Resource[] $resources
23
     * @return APIResponseData
24
     * @throws UnableToCreateAPIResponseDataException
25
     */
26 10
    public function multipleToAPIResponseData(?array $resources): APIResponseData
27
    {
28 10
        if(is_null($resources)) {
29 2
            return $this->toAPIResponseData(null);
30
        }
31
32 8
        return new APIResponseData(array_map(function(Resource $resource) {
33 7
            return $this->toAPIResponseData($resource)->getData();
34 8
        }, $resources));
35
    }
36
}
37