Passed
Push — develop ( eacc0b...67462a )
by Andrew
02:45
created

UrlBuilder::makeUserHost()   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
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 1
crap 1
1
<?php
2
3
4
namespace ddlzz\AmoAPI\Request;
5
use ddlzz\AmoAPI\SettingsStorage;
6
7
8
/**
9
 * Class UrlBuilder
10
 * @package ddlzz\AmoAPI\Request
11
 * @author ddlzz
12
 */
13
class UrlBuilder
14
{
15
    /** @var SettingsStorage */
16
    private $settings;
17
18
    /** @var string */
19
    private $subdomain;
20
21
    /**
22
     * UrlBuilder constructor.
23
     * @param SettingsStorage $settings
24
     * @param string $subdomain
25
     */
26 9
    public function __construct(SettingsStorage $settings, $subdomain)
27
    {
28 9
        $this->settings = $settings;
29 9
        $this->subdomain = $subdomain;
30 9
    }
31
32
    /**
33
     * @param string $code
34
     * @param array $params
35
     * @return string
36
     * @throws \ddlzz\AmoAPI\Exceptions\InvalidArgumentException
37
     */
38 8
    public function prepareMethodUrl($code, $params = [])
39
    {
40 8
        $host = $this->makeUserHost($this->subdomain);
41 8
        $path = $this->settings->getMethodPath($code);
42
43 8
        if (!empty($params)) {
44 2
            $query = '?';
45 2
            foreach ($params as $key => $param) {
46 2
                $query .= $key . '=' . $param;
47
48 2
                if ($param !== end($params)) {
49 2
                    $query .= '&';
50
                }
51
            }
52
        }
53
54 8
        $result = isset($query) ? $host . $path . $query : $host . $path;
55
56 8
        return $result;
57
    }
58
59
    /**
60
     * @param string $domain
61
     * @return string
62
     */
63 8
    private function makeUserHost($domain)
64
    {
65 8
        return $this->settings->getScheme() . '://' . $domain . '.' . $this->settings->getDomain();
66
    }
67
}