Issues (13)

src/Weather/WeatherGeoLocation.php (4 issues)

1
<?php
2
3
namespace Lefty\Weather;
4
5
use Anax\Commons\ContainerInjectableInterface;
6
use Anax\Commons\ContainerInjectableTrait;
7
8
// use Anax\Route\Exception\ForbiddenException;
9
// use Anax\Route\Exception\NotFoundException;
10
// use Anax\Route\Exception\InternalErrorException;
11
12
/**
13
*
14
*
15
*/
16
17
18
class WeatherGeoLocation implements ContainerInjectableInterface
19
{
20
    use ContainerInjectableTrait;
21
22
    private $curl = "";
23
    private $geoLocation = "";
24
    private $apiKey = "";
25
26
27 6
    public function setAPI(string $key)
28
    {
29 6
        $this->apiKey = $this->di->get("keystore")->getKey($key);
30 6
    }
31
32 6
    public function checkGeoLocation($ipAddress)
33
    {
34
        // $this->apiKey = $this->di->get("keystore")->getKey("ipstack");
35 6
        $this->geoInitCurl();
36 6
        $this->geoSetOptCurl($ipAddress);
37 6
        $this->geoExecuteCurl();
38 6
        $this->geoCloseCurl();
39 6
    }
40
41 6
    private function geoInitCurl()
42
    {
43 6
        $this->curl = curl_init();
44 6
    }
45
46 6
    private function geoSetOptCurl($ipAddress)
47
    {
48 6
        curl_setopt($this->curl, CURLOPT_URL, "http://api.ipstack.com/" . $ipAddress . "?access_key=" . $this->apiKey . "&fields=latitude,longitude,city");
0 ignored issues
show
$this->curl of type string is incompatible with the type resource expected by parameter $ch of curl_setopt(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

48
        curl_setopt(/** @scrutinizer ignore-type */ $this->curl, CURLOPT_URL, "http://api.ipstack.com/" . $ipAddress . "?access_key=" . $this->apiKey . "&fields=latitude,longitude,city");
Loading history...
49 6
        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);
50 6
    }
51
52 6
    private function geoExecuteCurl()
53
    {
54 6
        $this->geoLocation = json_decode(curl_exec($this->curl));
0 ignored issues
show
$this->curl of type string is incompatible with the type resource expected by parameter $ch of curl_exec(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

54
        $this->geoLocation = json_decode(curl_exec(/** @scrutinizer ignore-type */ $this->curl));
Loading history...
55 6
    }
56
57 6
    private function geoCloseCurl()
58
    {
59 6
        curl_close($this->curl);
0 ignored issues
show
$this->curl of type string is incompatible with the type resource expected by parameter $ch of curl_close(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

59
        curl_close(/** @scrutinizer ignore-type */ $this->curl);
Loading history...
60 6
    }
61
62 8
    public function getGeoLocation()
63
    {
64 8
        return $this->geoLocation;
65
    }
66
67 2
    public function setGeoLocation($geoLocation)
68
    {
69 2
        $this->geoLocation = $geoLocation;
70 2
    }
71
72 8
    public function geoLocationOK()
73
    {
74
75 8
        if (!empty($this->geoLocation->longitude)) {
0 ignored issues
show
The property longitude does not exist on string.
Loading history...
76 2
            return true;
77
        }
78
79 6
        return false;
80
    }
81
}
82