Passed
Push — master ( 1cf0a9...56b73d )
by Ayan
01:37
created

Config::getServiceName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Phprest\Service\Hateoas;
4
5
use Phprest\Service\Configurable;
6
use Symfony\Component\HttpFoundation\Request;
7
8
class Config implements Configurable
9
{
10
    /**
11
     * @var bool
12
     */
13
    public $debug = false;
14
15
    /**
16
     * @var string
17
     */
18
    public $cacheDir;
19
20
    /**
21
     * @var string
22
     */
23
    public $metadataDir;
24
25
    /**
26
     * @var callable
27
     */
28
    public $urlGenerator;
29
30
    /**
31
     * @param bool $debug
32
     * @param string|null $cacheDir
33
     * @param string|null $metadataDir
34
     * @param callable|null $urlGenerator
35
     */
36 87
    public function __construct(
37
        $debug = false,
38
        $cacheDir = null,
39
        $metadataDir = null,
40
        $urlGenerator = null
41
    ) {
42 87
        $this->debug        = $debug;
43 87
        $this->cacheDir     = $cacheDir;
44 87
        $this->metadataDir  = $metadataDir;
45 87
        $this->urlGenerator = $urlGenerator;
46
47 87
        if (is_null($cacheDir)) {
48 87
            $this->cacheDir = sys_get_temp_dir() . '/hateoas';
49
        }
50
51 87
        if (is_null($metadataDir)) {
52 87
            $this->metadataDir = sys_get_temp_dir() . '/hateoas';
53
        }
54
55 87
        if (is_null($urlGenerator)) {
56
            $this->urlGenerator = function ($route, array $parameters, $absolute) {
57 4
                return $this->generateUrl($route, $parameters, $absolute);
58
            };
59
        }
60 87
    }
61
62
    /**
63
     * @param string $route
64
     * @param array $parameters
65
     * @param bool $absolute
66
     *
67
     * @return string
68
     */
69 4
    protected function generateUrl($route, array $parameters, $absolute)
70
    {
71 4
        $queryParams    = '';
72 4
        $resourceParams = [];
73
74 4
        foreach ($parameters as $paramName => $paramValue) {
75 3
            if (strpos(strtolower($paramName), 'id') !== false) {
76 2
                $resourceParams[$paramName] = $paramValue;
77 2
                continue;
78
            }
79
80 3
            $queryParams .= $paramName . '=' . $paramValue . '&';
81
        }
82
83 4
        if ($queryParams !== '') {
84 3
            $queryParams = '?' . substr($queryParams, 0, -1);
85
        }
86
87 4
        $resourceParams = implode('/', $resourceParams);
88
89 4
        if (! empty($resourceParams)) {
90 2
            $resourceParams = '/' . $resourceParams;
91
        }
92
93 4
        if ($absolute) {
94 1
            return Request::createFromGlobals()->getSchemeAndHttpHost() .
95 1
                $route .
96 1
                $resourceParams .
97 1
                $queryParams;
98
        }
99
100 3
        return $route . $resourceParams . $queryParams;
101
    }
102
103
    /**
104
     * @return string
105
     */
106 20
    public static function getServiceName()
107
    {
108 20
        return 'hateoas';
109
    }
110
}
111