OpenWeatherMapModel::setGeoApi()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 2
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 1
rs 10
1
<?php
2
3
namespace Bashar\WeatherModel;
4
5
use Anax\Commons\ContainerInjectableInterface;
6
use Anax\Commons\ContainerInjectableTrait;
7
8
/**
9
 * A sample controller to show how a controller class can be implemented.
10
 * The controller will be injected with $di if implementing the interface
11
 * ContainerInjectableInterface, like this sample class does.
12
 * The controller is mounted on a particular route and can then handle all
13
 * requests for that mount point.
14
 *
15
 * @SuppressWarnings(PHPMD.TooManyPublicMethods)
16
 */
17
class OpenWeatherMapModel implements ContainerInjectableInterface
18
{
19
    use ContainerInjectableTrait;
20
21
    /**
22
     * @var string
23
     */
24
    private $message = "127.0.0.1";
25
    private $weatherApiPrevious = [];
26
    private $weatherApiNext;
27
28
29
    /**
30
     * returns the api from the config file "ipstackcfg"
31
     *
32
     */
33 2
    public function getDetails() : string
34
    {
35 2
        return $this->message;
36
    }
37
38
39
    /**
40
     * Sets the api from the config file
41
     * into the controller.
42
     *
43
     */
44 13
    public function setMessage($message) : void
45
    {
46 13
        $this->message = $message;
47 13
    }
48
49
50
    /**
51
     * Sets the api from the config file
52
     * into the controller.
53
     *
54
     */
55 3
    public function setGeoApi($enteredIp, $geoApi) : void
56
    {
57 3
        $this->geoApiUrl = "http://api.ipstack.com/". $enteredIp . "?access_key=" . $geoApi .
0 ignored issues
show
Bug Best Practice introduced by
The property geoApiUrl does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
58 3
        '&hostname=1&security=1';
59 3
    }
60
61
62
    /**
63
     * returns the api from the config file "ipstackcfg"
64
     *
65
     */
66 3
    public function getGeoApiUrl()
67
    {
68 3
        return $this->geoApiUrl;
69
    }
70
71
72
    /**
73
     * Sets the api from the config file
74
     * into the controller.
75
     *
76
     */
77 1
    public function setWeatherApi5PreviousDays($geoUrlLat, $geoUrlLon) : void
78
    {
79 1
        $options = '&exclude=minutely,hourly,alerts&units=metric&lang=en';
80 1
        $baseUrl = 'http://api.openweathermap.org/data/2.5/onecall/timemachine?';
81 1
        for ($i = -5; $i <= -1; $i++) {
82 1
            $datePrevious = strtotime("$i days");
83 1
            array_push($this->weatherApiPrevious, $baseUrl . 'lat=' . $geoUrlLat . '&lon=' .
84 1
                $geoUrlLon . '&dt=' . $datePrevious . $options . '&appid=' . $this->message);
85
        }
86 1
    }
87
88
89
    /**
90
     * Sets the api from the config file
91
     * into the controller.
92
     *
93
     */
94 1
    public function setWeatherApiNext10Days($geoUrlLat, $geoUrlLon) : void
95
    {
96 1
        $options = '&exclude=current,minutely,hourly,alerts&units=metric&lang=en';
97 1
        $baseUrl = 'https://api.openweathermap.org/data/2.5/onecall?';
98
99 1
        $this->weatherApiNext = $baseUrl . 'lat=' . $geoUrlLat . '&lon=' .
100 1
            $geoUrlLon . $options .  '&appid=' . $this->message;
101 1
    }
102
103
104
        /**
105
     * a json format
106
     *
107
     */
108 2
    public function getWeatherInJson($weatherApi)
109
    {
110 2
        $encoded = json_encode($weatherApi, true);
0 ignored issues
show
Bug introduced by
true of type true is incompatible with the type integer expected by parameter $options of json_encode(). ( Ignorable by Annotation )

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

110
        $encoded = json_encode($weatherApi, /** @scrutinizer ignore-type */ true);
Loading history...
111 2
        $pattern1 = "/\"{/i";
112 2
        $first = preg_replace($pattern1, "{", $encoded);
113 2
        $pattern2 = "/[\]]$/i";
114 2
        $second = preg_replace($pattern2, "<br>]", $first);
115 2
        $pattern3 = "/,/i";
116 2
        $third = preg_replace($pattern3, ",<br>********", $second);
117 2
        $pattern4 = "/{/i";
118 2
        $fourth = preg_replace($pattern4, "{<br>********", $third);
119 2
        $pattern5 = "/}/i";
120 2
        $fifth = preg_replace($pattern5, "<br>****}", $fourth);
121 2
        $pattern6 = "/[\\\\]/i";
122 2
        $sixth = preg_replace($pattern6, "", $fifth);
123 2
        $string = str_replace("*", "&nbsp", $sixth);
124
125 2
        return $string;
126
    }
127
128
    /**
129
     * returns the api from the config file "openWeatherMap"
130
     *
131
     */
132 1
    public function getWeatherApiPrevious()
133
    {
134 1
        return $this->weatherApiPrevious;
135
    }
136
137
138
    /**
139
     * returns the api from the config file "openWeatherMap"
140
     *
141
     */
142 1
    public function getWeatherApiNext()
143
    {
144 1
        return $this->weatherApiNext;
145
    }
146
}
147