ApiAdapter   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 5
Bugs 1 Features 1
Metric Value
c 5
b 1
f 1
dl 0
loc 54
wmc 8
lcom 1
cbo 1
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getNumberOfResults() 0 6 2
A getResults() 0 6 2
A getResult() 0 15 3
1
<?php
2
3
namespace Sylius\Api;
4
5
class ApiAdapter implements AdapterInterface
6
{
7
    /**
8
     * @var ApiInterface $api
9
     */
10
    private $api;
11
12
    /**
13
     * @var array
14
     */
15
    private $cachedResults;
16
17
    public function __construct(ApiInterface $api)
18
    {
19
        $this->api = $api;
20
    }
21
22
    public function getNumberOfResults(array $queryParameters, array $uriParameters = [])
23
    {
24
        $result = $this->getResult($queryParameters, $uriParameters, true);
25
26
        return isset($result['total']) ? $result['total'] : 0;
27
    }
28
29
    public function getResults(array $queryParameters, array $uriParameters = [])
30
    {
31
        $result = $this->getResult($queryParameters, $uriParameters);
32
33
        return isset($result['_embedded']['items']) ? $result['_embedded']['items'] : array();
34
    }
35
36
    /**
37
     * @param array $queryParameters
38
     * @param array $uriParameters
39
     * @param bool  $cacheResult
40
     *
41
     * @return array
42
     */
43
    private function getResult(array $queryParameters, array $uriParameters, $cacheResult = false)
44
    {
45
        $hash = md5(serialize($queryParameters) . serialize($uriParameters));
46
        if (isset($this->cachedResults[$hash])) {
47
            return $this->cachedResults[$hash];
48
        }
49
50
        $result = $this->api->getPaginated($queryParameters, $uriParameters);
51
        if ($cacheResult) {
52
            $this->cachedResults = array();
53
            $this->cachedResults[$hash] = $result;
54
        }
55
56
        return $result;
57
    }
58
}
59