Completed
Push — master ( 435979...cc3d03 )
by Roberto
06:42 queued 03:57
created
src/Abstracts/Api.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -106,7 +106,7 @@
 block discarded – undo
106 106
 	public function createRequest(array $params, ?string $endpoint = null): GoogleMapsRequest
107 107
 	{
108 108
 
109
-		$this->request = new GoogleMapsRequest($params, $endpoint);;
109
+		$this->request = new GoogleMapsRequest($params, $endpoint); ;
110 110
 
111 111
 		return $this->request;
112 112
 	}
Please login to merge, or discard this patch.
Indentation   +176 added lines, -176 removed lines patch added patch discarded remove patch
@@ -25,182 +25,182 @@
 block discarded – undo
25 25
 abstract class Api
26 26
 {
27 27
 
28
-	/**
29
-	 * @var string
30
-	 */
31
-	const SERVICE_ENDPOINT = null;
32
-
33
-	/**
34
-	 * @var GoogleMapsApi
35
-	 */
36
-	protected $google_maps_api = null;
37
-
38
-	/**
39
-	 * @var string
40
-	 */
41
-	protected $result_type = '';
42
-
43
-	/**
44
-	 * @var string
45
-	 */
46
-	protected $result_collection_type = '';
47
-
48
-	/**
49
-	 * @var GoogleMapsResponse
50
-	 */
51
-	protected $response;
52
-
53
-	/**
54
-	 * @var GoogleMapsRequest
55
-	 */
56
-	protected $request;
57
-
58
-	/**
59
-	 * Api constructor.
60
-	 *
61
-	 * @param array $config
62
-	 */
63
-	public function __construct(array $config = [])
64
-	{
65
-
66
-		$service_config = $this->getServiceConfig($config);
67
-		$this->setGoogleMapsApi(new GoogleMapsApi($service_config));
68
-	}
69
-
70
-	/**
71
-	 * @param array $config
72
-	 *
73
-	 * @return array
74
-	 */
75
-	protected function getServiceConfig(array $config = []): array
76
-	{
77
-
78
-		return array_merge($config, [
79
-			GoogleMapsApiConfigFields::SERVICE_ENDPOINT => $this->getServiceEndpoint()
80
-		]);
81
-	}
82
-
83
-	/**
84
-	 * @return string
85
-	 */
86
-	public function getServiceEndpoint(): string
87
-	{
88
-
89
-		return static::SERVICE_ENDPOINT ?? '';
90
-	}
91
-
92
-	/**
93
-	 * @param array       $params
94
-	 * @param null|string $endpoint
95
-	 *
96
-	 * @return GoogleMapsResult|GoogleMapsResultsCollection
97
-	 */
98
-	public function callApi(array $params, ?string $endpoint = null)
99
-	{
100
-
101
-		$this->createRequest($params, $endpoint);
102
-
103
-		return $this->getResponseResult();
104
-	}
105
-
106
-	/**
107
-	 * @param array       $params
108
-	 * @param null|string $endpoint since 0.5.0
109
-	 *
110
-	 * @return GoogleMapsRequest
111
-	 */
112
-	public function createRequest(array $params, ?string $endpoint = null): GoogleMapsRequest
113
-	{
114
-
115
-		$this->request = new GoogleMapsRequest($params, $endpoint);;
116
-
117
-		return $this->request;
118
-	}
119
-
120
-	/**
121
-	 * @return GoogleMapsResult|GoogleMapsResultsCollection
122
-	 */
123
-	public function getResponseResult()
124
-	{
125
-
126
-		$result = $this->getResponse()->getResult();
127
-		if ($result) {
128
-			$result_type = $this->result_type;
129
-
130
-			return new $result_type($result);
131
-		}
132
-		$results = $this->getResponse()->getResults();
133
-
134
-		$result_collection_type_class = $this->result_collection_type;
135
-
136
-		return new $result_collection_type_class($results);
137
-	}
138
-
139
-	/**
140
-	 * @return GoogleMapsResponse
141
-	 */
142
-	public function getResponse(): GoogleMapsResponse
143
-	{
144
-
145
-		$this->response = $this->getGoogleMapsApi()->get($this->request);
146
-
147
-		return $this->response;
148
-	}
149
-
150
-	/**
151
-	 * @return GoogleMapsApi
152
-	 */
153
-	public function getGoogleMapsApi(): GoogleMapsApi
154
-	{
155
-
156
-		return $this->google_maps_api;
157
-	}
158
-
159
-	/**
160
-	 * @param GoogleMapsApi $google_maps_api
161
-	 *
162
-	 * @return Api
163
-	 */
164
-	public function setGoogleMapsApi(GoogleMapsApi $google_maps_api): Api
165
-	{
166
-
167
-		$this->google_maps_api = $google_maps_api;
168
-
169
-		return $this;
170
-	}
171
-
172
-	/**
173
-	 * @return GoogleMapsResultsCollection
174
-	 */
175
-	public function getSingleResult(): GoogleMapsResultsCollection
176
-	{
177
-
178
-		$results = $this->getResponse()->getResults();
179
-
180
-		$result_collection_type_class = $this->result_collection_type;
181
-
182
-		return new $result_collection_type_class($results);
183
-	}
184
-
185
-	/**
186
-	 * @return GoogleMapsResultsCollection
187
-	 */
188
-	public function getNextPage(): GoogleMapsResultsCollection
189
-	{
190
-
191
-		if ($this->responseHasNewPage()) {
192
-			$this->request->setParam(GoogleMapsRequestFields::NEXT_PAGE_TOKEN, $this->response->getNextPageToken());
193
-		}
194
-
195
-		return $this->getResponseResult();
196
-	}
28
+    /**
29
+     * @var string
30
+     */
31
+    const SERVICE_ENDPOINT = null;
32
+
33
+    /**
34
+     * @var GoogleMapsApi
35
+     */
36
+    protected $google_maps_api = null;
37
+
38
+    /**
39
+     * @var string
40
+     */
41
+    protected $result_type = '';
42
+
43
+    /**
44
+     * @var string
45
+     */
46
+    protected $result_collection_type = '';
47
+
48
+    /**
49
+     * @var GoogleMapsResponse
50
+     */
51
+    protected $response;
52
+
53
+    /**
54
+     * @var GoogleMapsRequest
55
+     */
56
+    protected $request;
57
+
58
+    /**
59
+     * Api constructor.
60
+     *
61
+     * @param array $config
62
+     */
63
+    public function __construct(array $config = [])
64
+    {
65
+
66
+        $service_config = $this->getServiceConfig($config);
67
+        $this->setGoogleMapsApi(new GoogleMapsApi($service_config));
68
+    }
69
+
70
+    /**
71
+     * @param array $config
72
+     *
73
+     * @return array
74
+     */
75
+    protected function getServiceConfig(array $config = []): array
76
+    {
77
+
78
+        return array_merge($config, [
79
+            GoogleMapsApiConfigFields::SERVICE_ENDPOINT => $this->getServiceEndpoint()
80
+        ]);
81
+    }
82
+
83
+    /**
84
+     * @return string
85
+     */
86
+    public function getServiceEndpoint(): string
87
+    {
88
+
89
+        return static::SERVICE_ENDPOINT ?? '';
90
+    }
91
+
92
+    /**
93
+     * @param array       $params
94
+     * @param null|string $endpoint
95
+     *
96
+     * @return GoogleMapsResult|GoogleMapsResultsCollection
97
+     */
98
+    public function callApi(array $params, ?string $endpoint = null)
99
+    {
100
+
101
+        $this->createRequest($params, $endpoint);
102
+
103
+        return $this->getResponseResult();
104
+    }
105
+
106
+    /**
107
+     * @param array       $params
108
+     * @param null|string $endpoint since 0.5.0
109
+     *
110
+     * @return GoogleMapsRequest
111
+     */
112
+    public function createRequest(array $params, ?string $endpoint = null): GoogleMapsRequest
113
+    {
114
+
115
+        $this->request = new GoogleMapsRequest($params, $endpoint);;
116
+
117
+        return $this->request;
118
+    }
119
+
120
+    /**
121
+     * @return GoogleMapsResult|GoogleMapsResultsCollection
122
+     */
123
+    public function getResponseResult()
124
+    {
125
+
126
+        $result = $this->getResponse()->getResult();
127
+        if ($result) {
128
+            $result_type = $this->result_type;
129
+
130
+            return new $result_type($result);
131
+        }
132
+        $results = $this->getResponse()->getResults();
133
+
134
+        $result_collection_type_class = $this->result_collection_type;
135
+
136
+        return new $result_collection_type_class($results);
137
+    }
138
+
139
+    /**
140
+     * @return GoogleMapsResponse
141
+     */
142
+    public function getResponse(): GoogleMapsResponse
143
+    {
144
+
145
+        $this->response = $this->getGoogleMapsApi()->get($this->request);
146
+
147
+        return $this->response;
148
+    }
149
+
150
+    /**
151
+     * @return GoogleMapsApi
152
+     */
153
+    public function getGoogleMapsApi(): GoogleMapsApi
154
+    {
155
+
156
+        return $this->google_maps_api;
157
+    }
158
+
159
+    /**
160
+     * @param GoogleMapsApi $google_maps_api
161
+     *
162
+     * @return Api
163
+     */
164
+    public function setGoogleMapsApi(GoogleMapsApi $google_maps_api): Api
165
+    {
166
+
167
+        $this->google_maps_api = $google_maps_api;
168
+
169
+        return $this;
170
+    }
171
+
172
+    /**
173
+     * @return GoogleMapsResultsCollection
174
+     */
175
+    public function getSingleResult(): GoogleMapsResultsCollection
176
+    {
177
+
178
+        $results = $this->getResponse()->getResults();
179
+
180
+        $result_collection_type_class = $this->result_collection_type;
181
+
182
+        return new $result_collection_type_class($results);
183
+    }
184
+
185
+    /**
186
+     * @return GoogleMapsResultsCollection
187
+     */
188
+    public function getNextPage(): GoogleMapsResultsCollection
189
+    {
190
+
191
+        if ($this->responseHasNewPage()) {
192
+            $this->request->setParam(GoogleMapsRequestFields::NEXT_PAGE_TOKEN, $this->response->getNextPageToken());
193
+        }
194
+
195
+        return $this->getResponseResult();
196
+    }
197 197
 
198
-	/**
199
-	 * @return bool
200
-	 */
201
-	public function responseHasNewPage(): bool
202
-	{
198
+    /**
199
+     * @return bool
200
+     */
201
+    public function responseHasNewPage(): bool
202
+    {
203 203
 
204
-		return ($this->response instanceof GoogleMapsResponse) ? $this->response->getNextPageToken() : false;
205
-	}
204
+        return ($this->response instanceof GoogleMapsResponse) ? $this->response->getNextPageToken() : false;
205
+    }
206 206
 }
207 207
\ No newline at end of file
Please login to merge, or discard this patch.
src/Enum/GoogleMapsResponseFormat.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -17,15 +17,15 @@
 block discarded – undo
17 17
 class GoogleMapsResponseFormat
18 18
 {
19 19
 
20
-	/**
21
-	 * string: json
22
-	 */
23
-	const JSON = 'json';
20
+    /**
21
+     * string: json
22
+     */
23
+    const JSON = 'json';
24 24
 
25
-	/**
26
-	 * string: xml
27
-	 * NOT supported in this version
28
-	 */
29
-	const XML = 'xml';
25
+    /**
26
+     * string: xml
27
+     * NOT supported in this version
28
+     */
29
+    const XML = 'xml';
30 30
 
31 31
 }
32 32
\ No newline at end of file
Please login to merge, or discard this patch.
src/Enum/GoogleMapsApiConfigFields.php 1 patch
Indentation   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -17,18 +17,18 @@
 block discarded – undo
17 17
 class GoogleMapsApiConfigFields
18 18
 {
19 19
 
20
-	/**
21
-	 * string: key
22
-	 */
23
-	const KEY = 'key';
20
+    /**
21
+     * string: key
22
+     */
23
+    const KEY = 'key';
24 24
 
25
-	/**
26
-	 * string: sensor
27
-	 */
28
-	const SENSOR = 'sensor';
25
+    /**
26
+     * string: sensor
27
+     */
28
+    const SENSOR = 'sensor';
29 29
 
30
-	/**
31
-	 * string: service_endpoint
32
-	 */
33
-	const SERVICE_ENDPOINT = 'service_endpoint';
30
+    /**
31
+     * string: service_endpoint
32
+     */
33
+    const SERVICE_ENDPOINT = 'service_endpoint';
34 34
 }
35 35
\ No newline at end of file
Please login to merge, or discard this patch.
src/Http/GoogleMapsResponse.php 3 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -127,7 +127,7 @@
 block discarded – undo
127 127
 				$error_message = $array_response[GoogleMapsResponseFields::ERROR_MESSAGE];
128 128
 				$this->setErrorMessage($error_message);
129 129
 			} elseif (!empty($array_response[GoogleMapsResponseFields::STATUS])) {
130
-				$error_message .= ': ' . $array_response[GoogleMapsResponseFields::STATUS];
130
+				$error_message .= ': '.$array_response[GoogleMapsResponseFields::STATUS];
131 131
 				$this->setErrorMessage($error_message);
132 132
 			}
133 133
 			throw new RequestException($error_message);
Please login to merge, or discard this patch.
Indentation   +336 added lines, -336 removed lines patch added patch discarded remove patch
@@ -23,341 +23,341 @@
 block discarded – undo
23 23
 class GoogleMapsResponse
24 24
 {
25 25
 
26
-	/**
27
-	 * @var Response
28
-	 */
29
-	protected $response = null;
30
-
31
-	/**
32
-	 * Single result
33
-	 * When the Places service returns results from a details request, it places them within a single result
34
-	 *
35
-	 * @var array
36
-	 * @see https://developers.google.com/places/web-service/details#PlaceDetailsResults
37
-	 */
38
-	protected $result = null;
39
-
40
-	/**
41
-	 * contains an array of places, with information about each.
42
-	 * The Places API returns up to 20 establishment results per query.
43
-	 * Additionally, political results may be returned which serve to identify the area of the request.
44
-	 *
45
-	 * @var array
46
-	 * @see https://developers.google.com/places/web-service/search#PlaceSearchResults
47
-	 */
48
-	protected $results = null;
49
-
50
-	/**
51
-	 * contains metadata on the request.
52
-	 *
53
-	 * @var string
54
-	 * @see https://developers.google.com/places/web-service/search#PlaceSearchStatusCodes
55
-	 */
56
-	protected $status = null;
57
-
58
-	/**
59
-	 * @var string
60
-	 */
61
-	protected $error_message = null;
62
-
63
-	/**
64
-	 * @var array
65
-	 */
66
-	protected $array_response = null;
67
-
68
-	/**
69
-	 * @var null|array
70
-	 */
71
-	protected $http_status_code = null;
72
-
73
-	/**
74
-	 * may contain a set of attributions about this listing which must be displayed to the user (some listings may not have attribution).
75
-	 *
76
-	 * @var null|array
77
-	 * @since 0.5.0
78
-	 */
79
-	protected $html_attributions = null;
80
-
81
-	/**
82
-	 * @var null|string
83
-	 * @since 0.5.0
84
-	 */
85
-	protected $next_page_token = null;
86
-
87
-	/**
88
-	 * GoogleMapsResponse constructor.
89
-	 *
90
-	 * @param Response $response
91
-	 */
92
-	public function __construct(Response $response)
93
-	{
94
-
95
-		$this->setResponse($response);
96
-
97
-		$this->parseResponse();
98
-
99
-		$this->checkHttpStatusCode();
100
-	}
101
-
102
-	/**
103
-	 * @param Response $response
104
-	 *
105
-	 * @return GoogleMapsResponse
106
-	 */
107
-	public function setResponse(Response $response): GoogleMapsResponse
108
-	{
109
-
110
-		$this->response = $response;
111
-
112
-		return $this;
113
-	}
114
-
115
-	/**
116
-	 * @return GoogleMapsResponse
117
-	 *
118
-	 * @throws RequestException
119
-	 * @throws ResponseException
120
-	 */
121
-	protected function parseResponse(): GoogleMapsResponse
122
-	{
123
-
124
-		$json_response = $this->response->getBody()->getContents();
125
-		$array_response = $this->toArray($json_response);
126
-		$result = null;
127
-		$results = null;
128
-
129
-		if (empty($array_response[GoogleMapsResponseFields::STATUS])) {
130
-			throw new ResponseException('Missing "status" in GoogleMapsApi Response');
131
-		}
132
-		$this->setStatus($array_response[GoogleMapsResponseFields::STATUS]);
133
-
134
-		if ($this->getStatus() != GoogleMapsResponseStatusValues::OK) {
135
-			$error_message = 'Something went wrong';
136
-			if (!empty($array_response[GoogleMapsResponseFields::ERROR_MESSAGE])) {
137
-				$error_message = $array_response[GoogleMapsResponseFields::ERROR_MESSAGE];
138
-				$this->setErrorMessage($error_message);
139
-			} elseif (!empty($array_response[GoogleMapsResponseFields::STATUS])) {
140
-				$error_message .= ': ' . $array_response[GoogleMapsResponseFields::STATUS];
141
-				$this->setErrorMessage($error_message);
142
-			}
143
-			throw new RequestException($error_message);
144
-
145
-		}
146
-
147
-		if (!empty($array_response[GoogleMapsResponseFields::RESULTS])) {
148
-			$results = $array_response[GoogleMapsResponseFields::RESULTS];
149
-
150
-		} elseif (!empty($array_response[GoogleMapsResponseFields::CANDIDATES])) {
151
-			$results = $array_response[GoogleMapsResponseFields::CANDIDATES];
152
-
153
-		}elseif (!empty($array_response[GoogleMapsResponseFields::RESULT])) {
154
-			$result = $array_response[GoogleMapsResponseFields::RESULT];
155
-
156
-		} else {
157
-			throw new ResponseException('Missing "results" in GoogleMapsApi Response');
158
-		}
159
-		$this->setResult($result);
160
-		$this->setResults($results);
161
-
162
-		if (!empty($array_response[GoogleMapsResponseFields::HTML_ATTRIBUTIONS])) {
163
-			$this->setHtmlAttributions($array_response[GoogleMapsResponseFields::HTML_ATTRIBUTIONS]);
164
-		}
165
-
166
-		if (!empty($array_response[GoogleMapsResponseFields::NEXT_PAGE_TOKEN])) {
167
-			$this->setNextPageToken($array_response[GoogleMapsResponseFields::NEXT_PAGE_TOKEN]);
168
-		}
169
-
170
-		return $this;
171
-	}
172
-
173
-	/**
174
-	 * @param string $json_response
175
-	 *
176
-	 * @return array
177
-	 */
178
-	public function toArray(string $json_response): array
179
-	{
180
-
181
-		$this->array_response = json_decode($json_response, true);
182
-
183
-		return $this->array_response;
184
-	}
185
-
186
-	/**
187
-	 * @return string
188
-	 */
189
-	public function getStatus(): string
190
-	{
191
-
192
-		return $this->status;
193
-	}
194
-
195
-	/**
196
-	 * @param string $status
197
-	 *
198
-	 * @return GoogleMapsResponse
199
-	 */
200
-	public function setStatus(string $status)
201
-	{
202
-
203
-		$this->status = $status;
204
-
205
-		return $this;
206
-	}
207
-
208
-	/**
209
-	 * Check HTTP status code (silent/No exceptions!)
210
-	 * @return int
211
-	 */
212
-	protected function checkHttpStatusCode(): int
213
-	{
214
-
215
-		$this->http_status_code = $this->response->getStatusCode();
216
-
217
-		return $this->http_status_code;
218
-	}
219
-
220
-	/**
221
-	 * @return array
222
-	 */
223
-	public function getResults()
224
-	{
225
-
226
-		return $this->results;
227
-	}
228
-
229
-	/**
230
-	 * @param array $results
231
-	 *
232
-	 * @return $this
233
-	 */
234
-	public function setResults(?array $results)
235
-	{
236
-
237
-		$this->results = $results;
238
-
239
-		return $this;
240
-	}
241
-
242
-	/**
243
-	 * @return array
244
-	 * @since v0.6.0
245
-	 */
246
-	public function getResult()
247
-	{
248
-
249
-		return $this->result;
250
-	}
251
-
252
-	/**
253
-	 * @param array $result
254
-	 *
255
-	 * @return $this
256
-	 * @since v0.6.0
257
-	 */
258
-	public function setResult(?array $result)
259
-	{
260
-
261
-		$this->result = $result;
262
-
263
-		return $this;
264
-	}
265
-
266
-	/**
267
-	 * @return array
268
-	 */
269
-	public function getArrayResponse(): array
270
-	{
271
-
272
-		return $this->array_response;
273
-	}
274
-
275
-	/**
276
-	 * @param array $array_response
277
-	 *
278
-	 * @return GoogleMapsResponse
279
-	 */
280
-	public function setArrayResponse(array $array_response): GoogleMapsResponse
281
-	{
282
-
283
-		$this->array_response = $array_response;
284
-
285
-		return $this;
286
-	}
287
-
288
-	/**
289
-	 * @return mixed
290
-	 */
291
-	public function getErrorMessage()
292
-	{
293
-
294
-		return $this->error_message;
295
-	}
296
-
297
-	/**
298
-	 * @param $error_message
299
-	 *
300
-	 * @return GoogleMapsResponse
301
-	 */
302
-	public function setErrorMessage($error_message): GoogleMapsResponse
303
-	{
304
-
305
-		$this->error_message = $error_message;
306
-
307
-		return $this;
308
-	}
309
-
310
-	/**
311
-	 * @return int
312
-	 */
313
-	public function getHttpStatusCode(): int
314
-	{
315
-
316
-		return intval($this->http_status_code);
317
-	}
318
-
319
-	/**
320
-	 * @return array|null
321
-	 */
322
-	public function getHtmlAttributions(): ?array
323
-	{
324
-
325
-		return $this->html_attributions;
326
-	}
327
-
328
-	/**
329
-	 * @param array|null $html_attributions
330
-	 *
331
-	 * @return GoogleMapsResponse
332
-	 */
333
-	public function setHtmlAttributions(?array $html_attributions): GoogleMapsResponse
334
-	{
335
-
336
-		$this->html_attributions = $html_attributions;
337
-
338
-		return $this;
339
-	}
340
-
341
-	/**
342
-	 * @return string
343
-	 */
344
-	public function getNextPageToken(): string
345
-	{
346
-
347
-		return $this->next_page_token ?? '';
348
-	}
349
-
350
-	/**
351
-	 * @param $next_page_token
352
-	 *
353
-	 * @return GoogleMapsResponse
354
-	 */
355
-	public function setNextPageToken($next_page_token): GoogleMapsResponse
356
-	{
357
-
358
-		$this->next_page_token = $next_page_token;
359
-
360
-		return $this;
361
-	}
26
+    /**
27
+     * @var Response
28
+     */
29
+    protected $response = null;
30
+
31
+    /**
32
+     * Single result
33
+     * When the Places service returns results from a details request, it places them within a single result
34
+     *
35
+     * @var array
36
+     * @see https://developers.google.com/places/web-service/details#PlaceDetailsResults
37
+     */
38
+    protected $result = null;
39
+
40
+    /**
41
+     * contains an array of places, with information about each.
42
+     * The Places API returns up to 20 establishment results per query.
43
+     * Additionally, political results may be returned which serve to identify the area of the request.
44
+     *
45
+     * @var array
46
+     * @see https://developers.google.com/places/web-service/search#PlaceSearchResults
47
+     */
48
+    protected $results = null;
49
+
50
+    /**
51
+     * contains metadata on the request.
52
+     *
53
+     * @var string
54
+     * @see https://developers.google.com/places/web-service/search#PlaceSearchStatusCodes
55
+     */
56
+    protected $status = null;
57
+
58
+    /**
59
+     * @var string
60
+     */
61
+    protected $error_message = null;
62
+
63
+    /**
64
+     * @var array
65
+     */
66
+    protected $array_response = null;
67
+
68
+    /**
69
+     * @var null|array
70
+     */
71
+    protected $http_status_code = null;
72
+
73
+    /**
74
+     * may contain a set of attributions about this listing which must be displayed to the user (some listings may not have attribution).
75
+     *
76
+     * @var null|array
77
+     * @since 0.5.0
78
+     */
79
+    protected $html_attributions = null;
80
+
81
+    /**
82
+     * @var null|string
83
+     * @since 0.5.0
84
+     */
85
+    protected $next_page_token = null;
86
+
87
+    /**
88
+     * GoogleMapsResponse constructor.
89
+     *
90
+     * @param Response $response
91
+     */
92
+    public function __construct(Response $response)
93
+    {
94
+
95
+        $this->setResponse($response);
96
+
97
+        $this->parseResponse();
98
+
99
+        $this->checkHttpStatusCode();
100
+    }
101
+
102
+    /**
103
+     * @param Response $response
104
+     *
105
+     * @return GoogleMapsResponse
106
+     */
107
+    public function setResponse(Response $response): GoogleMapsResponse
108
+    {
109
+
110
+        $this->response = $response;
111
+
112
+        return $this;
113
+    }
114
+
115
+    /**
116
+     * @return GoogleMapsResponse
117
+     *
118
+     * @throws RequestException
119
+     * @throws ResponseException
120
+     */
121
+    protected function parseResponse(): GoogleMapsResponse
122
+    {
123
+
124
+        $json_response = $this->response->getBody()->getContents();
125
+        $array_response = $this->toArray($json_response);
126
+        $result = null;
127
+        $results = null;
128
+
129
+        if (empty($array_response[GoogleMapsResponseFields::STATUS])) {
130
+            throw new ResponseException('Missing "status" in GoogleMapsApi Response');
131
+        }
132
+        $this->setStatus($array_response[GoogleMapsResponseFields::STATUS]);
133
+
134
+        if ($this->getStatus() != GoogleMapsResponseStatusValues::OK) {
135
+            $error_message = 'Something went wrong';
136
+            if (!empty($array_response[GoogleMapsResponseFields::ERROR_MESSAGE])) {
137
+                $error_message = $array_response[GoogleMapsResponseFields::ERROR_MESSAGE];
138
+                $this->setErrorMessage($error_message);
139
+            } elseif (!empty($array_response[GoogleMapsResponseFields::STATUS])) {
140
+                $error_message .= ': ' . $array_response[GoogleMapsResponseFields::STATUS];
141
+                $this->setErrorMessage($error_message);
142
+            }
143
+            throw new RequestException($error_message);
144
+
145
+        }
146
+
147
+        if (!empty($array_response[GoogleMapsResponseFields::RESULTS])) {
148
+            $results = $array_response[GoogleMapsResponseFields::RESULTS];
149
+
150
+        } elseif (!empty($array_response[GoogleMapsResponseFields::CANDIDATES])) {
151
+            $results = $array_response[GoogleMapsResponseFields::CANDIDATES];
152
+
153
+        }elseif (!empty($array_response[GoogleMapsResponseFields::RESULT])) {
154
+            $result = $array_response[GoogleMapsResponseFields::RESULT];
155
+
156
+        } else {
157
+            throw new ResponseException('Missing "results" in GoogleMapsApi Response');
158
+        }
159
+        $this->setResult($result);
160
+        $this->setResults($results);
161
+
162
+        if (!empty($array_response[GoogleMapsResponseFields::HTML_ATTRIBUTIONS])) {
163
+            $this->setHtmlAttributions($array_response[GoogleMapsResponseFields::HTML_ATTRIBUTIONS]);
164
+        }
165
+
166
+        if (!empty($array_response[GoogleMapsResponseFields::NEXT_PAGE_TOKEN])) {
167
+            $this->setNextPageToken($array_response[GoogleMapsResponseFields::NEXT_PAGE_TOKEN]);
168
+        }
169
+
170
+        return $this;
171
+    }
172
+
173
+    /**
174
+     * @param string $json_response
175
+     *
176
+     * @return array
177
+     */
178
+    public function toArray(string $json_response): array
179
+    {
180
+
181
+        $this->array_response = json_decode($json_response, true);
182
+
183
+        return $this->array_response;
184
+    }
185
+
186
+    /**
187
+     * @return string
188
+     */
189
+    public function getStatus(): string
190
+    {
191
+
192
+        return $this->status;
193
+    }
194
+
195
+    /**
196
+     * @param string $status
197
+     *
198
+     * @return GoogleMapsResponse
199
+     */
200
+    public function setStatus(string $status)
201
+    {
202
+
203
+        $this->status = $status;
204
+
205
+        return $this;
206
+    }
207
+
208
+    /**
209
+     * Check HTTP status code (silent/No exceptions!)
210
+     * @return int
211
+     */
212
+    protected function checkHttpStatusCode(): int
213
+    {
214
+
215
+        $this->http_status_code = $this->response->getStatusCode();
216
+
217
+        return $this->http_status_code;
218
+    }
219
+
220
+    /**
221
+     * @return array
222
+     */
223
+    public function getResults()
224
+    {
225
+
226
+        return $this->results;
227
+    }
228
+
229
+    /**
230
+     * @param array $results
231
+     *
232
+     * @return $this
233
+     */
234
+    public function setResults(?array $results)
235
+    {
236
+
237
+        $this->results = $results;
238
+
239
+        return $this;
240
+    }
241
+
242
+    /**
243
+     * @return array
244
+     * @since v0.6.0
245
+     */
246
+    public function getResult()
247
+    {
248
+
249
+        return $this->result;
250
+    }
251
+
252
+    /**
253
+     * @param array $result
254
+     *
255
+     * @return $this
256
+     * @since v0.6.0
257
+     */
258
+    public function setResult(?array $result)
259
+    {
260
+
261
+        $this->result = $result;
262
+
263
+        return $this;
264
+    }
265
+
266
+    /**
267
+     * @return array
268
+     */
269
+    public function getArrayResponse(): array
270
+    {
271
+
272
+        return $this->array_response;
273
+    }
274
+
275
+    /**
276
+     * @param array $array_response
277
+     *
278
+     * @return GoogleMapsResponse
279
+     */
280
+    public function setArrayResponse(array $array_response): GoogleMapsResponse
281
+    {
282
+
283
+        $this->array_response = $array_response;
284
+
285
+        return $this;
286
+    }
287
+
288
+    /**
289
+     * @return mixed
290
+     */
291
+    public function getErrorMessage()
292
+    {
293
+
294
+        return $this->error_message;
295
+    }
296
+
297
+    /**
298
+     * @param $error_message
299
+     *
300
+     * @return GoogleMapsResponse
301
+     */
302
+    public function setErrorMessage($error_message): GoogleMapsResponse
303
+    {
304
+
305
+        $this->error_message = $error_message;
306
+
307
+        return $this;
308
+    }
309
+
310
+    /**
311
+     * @return int
312
+     */
313
+    public function getHttpStatusCode(): int
314
+    {
315
+
316
+        return intval($this->http_status_code);
317
+    }
318
+
319
+    /**
320
+     * @return array|null
321
+     */
322
+    public function getHtmlAttributions(): ?array
323
+    {
324
+
325
+        return $this->html_attributions;
326
+    }
327
+
328
+    /**
329
+     * @param array|null $html_attributions
330
+     *
331
+     * @return GoogleMapsResponse
332
+     */
333
+    public function setHtmlAttributions(?array $html_attributions): GoogleMapsResponse
334
+    {
335
+
336
+        $this->html_attributions = $html_attributions;
337
+
338
+        return $this;
339
+    }
340
+
341
+    /**
342
+     * @return string
343
+     */
344
+    public function getNextPageToken(): string
345
+    {
346
+
347
+        return $this->next_page_token ?? '';
348
+    }
349
+
350
+    /**
351
+     * @param $next_page_token
352
+     *
353
+     * @return GoogleMapsResponse
354
+     */
355
+    public function setNextPageToken($next_page_token): GoogleMapsResponse
356
+    {
357
+
358
+        $this->next_page_token = $next_page_token;
359
+
360
+        return $this;
361
+    }
362 362
 
363 363
 }
364 364
\ No newline at end of file
Please login to merge, or discard this patch.
Braces   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -150,7 +150,7 @@
 block discarded – undo
150 150
 		} elseif (!empty($array_response[GoogleMapsResponseFields::CANDIDATES])) {
151 151
 			$results = $array_response[GoogleMapsResponseFields::CANDIDATES];
152 152
 
153
-		}elseif (!empty($array_response[GoogleMapsResponseFields::RESULT])) {
153
+		} elseif (!empty($array_response[GoogleMapsResponseFields::RESULT])) {
154 154
 			$result = $array_response[GoogleMapsResponseFields::RESULT];
155 155
 
156 156
 		} else {
Please login to merge, or discard this patch.
src/Http/Result/GeocodingResultsCollection.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -19,8 +19,8 @@
 block discarded – undo
19 19
 class GeocodingResultsCollection extends GoogleMapsResultsCollection
20 20
 {
21 21
 
22
-	/**
23
-	 * @var string
24
-	 */
25
-	protected $item_class = GeocodingResult::class;
22
+    /**
23
+     * @var string
24
+     */
25
+    protected $item_class = GeocodingResult::class;
26 26
 }
27 27
\ No newline at end of file
Please login to merge, or discard this patch.
src/Http/Result/ElevationResultsCollection.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -21,8 +21,8 @@
 block discarded – undo
21 21
 class ElevationResultsCollection extends GoogleMapsResultsCollection
22 22
 {
23 23
 
24
-	/**
25
-	 * @var string
26
-	 */
27
-	protected $item_class = ElevationResult::class;
24
+    /**
25
+     * @var string
26
+     */
27
+    protected $item_class = ElevationResult::class;
28 28
 }
29 29
\ No newline at end of file
Please login to merge, or discard this patch.
src/Http/Result/PlaceResultsCollection.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -21,8 +21,8 @@
 block discarded – undo
21 21
 class PlaceResultsCollection extends GoogleMapsResultsCollection
22 22
 {
23 23
 
24
-	/**
25
-	 * @var string
26
-	 */
27
-	protected $item_class = PlacesResult::class;
24
+    /**
25
+     * @var string
26
+     */
27
+    protected $item_class = PlacesResult::class;
28 28
 }
29 29
\ No newline at end of file
Please login to merge, or discard this patch.
src/Http/Result/GeocodingResult.php 1 patch
Indentation   +37 added lines, -37 removed lines patch added patch discarded remove patch
@@ -35,49 +35,49 @@
 block discarded – undo
35 35
 class GeocodingResult extends GoogleMapsResult
36 36
 {
37 37
 
38
-	/**
39
-	 * @var Address
40
-	 */
41
-	protected $address_components = null;
38
+    /**
39
+     * @var Address
40
+     */
41
+    protected $address_components = null;
42 42
 
43
-	/**
44
-	 * @var string
45
-	 */
46
-	protected $formatted_address = null;
43
+    /**
44
+     * @var string
45
+     */
46
+    protected $formatted_address = null;
47 47
 
48
-	/**
49
-	 * @var Geometry
50
-	 */
51
-	protected $geometry = null;
48
+    /**
49
+     * @var Geometry
50
+     */
51
+    protected $geometry = null;
52 52
 
53
-	/**
54
-	 * @var string
55
-	 */
56
-	protected $place_id = null;
53
+    /**
54
+     * @var string
55
+     */
56
+    protected $place_id = null;
57 57
 
58
-	/**
59
-	 * @var array
60
-	 */
61
-	protected $types = null;
58
+    /**
59
+     * @var array
60
+     */
61
+    protected $types = null;
62 62
 
63
-	/**
64
-	 * @var array
65
-	 */
66
-	protected $typeCheck = [
67
-		GoogleMapsResultFields::GEOMETRY           => Geometry::class,
68
-		GoogleMapsResultFields::ADDRESS_COMPONENTS => Address::class,
69
-		GoogleMapsResultFields::FORMATTED_ADDRESS  => 'string',
70
-		GoogleMapsResultFields::PLACE_ID           => 'string',
71
-		GoogleMapsResultFields::TYPES              => 'array'
72
-	];
63
+    /**
64
+     * @var array
65
+     */
66
+    protected $typeCheck = [
67
+        GoogleMapsResultFields::GEOMETRY           => Geometry::class,
68
+        GoogleMapsResultFields::ADDRESS_COMPONENTS => Address::class,
69
+        GoogleMapsResultFields::FORMATTED_ADDRESS  => 'string',
70
+        GoogleMapsResultFields::PLACE_ID           => 'string',
71
+        GoogleMapsResultFields::TYPES              => 'array'
72
+    ];
73 73
 
74
-	/**
75
-	 * @return Address
76
-	 */
77
-	public function getAddress(): Address
78
-	{
74
+    /**
75
+     * @return Address
76
+     */
77
+    public function getAddress(): Address
78
+    {
79 79
 
80
-		return $this->getAddressComponents();
81
-	}
80
+        return $this->getAddressComponents();
81
+    }
82 82
 
83 83
 }
84 84
\ No newline at end of file
Please login to merge, or discard this patch.
src/Http/Result/ElevationResult.php 1 patch
Indentation   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -30,28 +30,28 @@
 block discarded – undo
30 30
 class ElevationResult extends GoogleMapsResult
31 31
 {
32 32
 
33
-	/**
34
-	 * @var float
35
-	 */
36
-	protected $elevation = null;
37
-
38
-	/**
39
-	 * @var Location
40
-	 */
41
-	protected $location = null;
42
-
43
-	/**
44
-	 * @var float
45
-	 */
46
-	protected $resolution = null;
47
-
48
-	/**
49
-	 * @var array
50
-	 */
51
-	protected $typeCheck = [
52
-		GoogleMapsResultFields::LOCATION   => Location::class,
53
-		GoogleMapsResultFields::ELEVATION  => 'float',
54
-		GoogleMapsResultFields::RESOLUTION => 'float',
55
-	];
33
+    /**
34
+     * @var float
35
+     */
36
+    protected $elevation = null;
37
+
38
+    /**
39
+     * @var Location
40
+     */
41
+    protected $location = null;
42
+
43
+    /**
44
+     * @var float
45
+     */
46
+    protected $resolution = null;
47
+
48
+    /**
49
+     * @var array
50
+     */
51
+    protected $typeCheck = [
52
+        GoogleMapsResultFields::LOCATION   => Location::class,
53
+        GoogleMapsResultFields::ELEVATION  => 'float',
54
+        GoogleMapsResultFields::RESOLUTION => 'float',
55
+    ];
56 56
 
57 57
 }
58 58
\ No newline at end of file
Please login to merge, or discard this patch.