Completed
Push — master ( 6b6b52...a3ba2a )
by Carlos
01:49
created

GeoClient::getStopsFromStop()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 5
cts 5
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 2
crap 1
1
<?php
2
3
namespace Afonso\Emt;
4
5
use RuntimeException;
6
7
/**
8
 * The SDK client for the EMT OpenData API GEO service.
9
 *
10
 * @author Carlos Afonso Pérez <[email protected]>
11
 */
12
class GeoClient extends Client
13
{
14
    /**
15
     * Return details about stops around a given address and, optionally,
16
     * within the specified radius.
17
     *
18
     * An optional radius can be passed as well.
19
     *
20
     * @param string $streetName
21
     * @param int $streetNumber
22
     * @param int|null $radius
23
     * @return \stdClass
24
     * @throws \RuntimeException
25
     */
26 3
    public function getStreet($streetName, $streetNumber, $radius = null)
27
    {
28
        $params = [
29 3
            'description' => $streetName,
30 3
            'streetNumber' => $streetNumber,
31 3
            'Radius' => $radius,
32 1
        ];
33 3
        return $this->callGeoService('GetStreet.php', $params);
34
    }
35
36
    /**
37
     * Return details about stops around a given stop and, optionally, within
38
     * the specified radius.
39
     *
40
     * @param int $stopId
41
     * @param int|null $radius
42
     * @return \stdClass
43
     * @throws \RuntimeException
44
     */
45 3
    public function getStopsFromStop($stopId, $radius = null)
46
    {
47
        $params = [
48 3
            'idStop' => $stopId,
49 3
            'Radius' => $radius,
50 1
        ];
51 3
        return $this->callGeoService('GetStopsFromStop.php', $params);
52
    }
53
54
    /**
55
     * Make an arbitrary call to the GEO service.
56
     *
57
     * @param string $endpoint
58
     * @param array $params
59
     * @return \stdClass
60
     */
61 6
    protected function callGeoService($endpoint, array $params = [])
62
    {
63 6
        $url = self::ENDPOINT . '/emt-proxy-server/last/geo/' . $endpoint;
64 6
        return $this->launcher->launchRequest($url, $params);
65
    }
66
}
67