Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
50.00% covered (warning)
50.00%
1 / 2
CRAP
30.77% covered (danger)
30.77%
8 / 26
GeolocationController
0.00% covered (danger)
0.00%
0 / 1
50.00% covered (warning)
50.00%
1 / 2
35.88
30.77% covered (danger)
30.77%
8 / 26
 show
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
8 / 8
 index
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 18
1<?php
2
3namespace Qmp\Laravel\Geolocation\Controllers;
4
5use App\Http\Controllers\Controller;
6use Illuminate\Http\Response;
7use Illuminate\Http\Request;
8use Illuminate\Support\Facades\Log;
9use Qmp\Laravel\Geolocation\Services\GeolocApiServices\ServiceInterface;
10use Qmp\Laravel\Geolocation\Services\Validations\GeolocValidator;
11use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController;
12
13class GeolocationController extends AbstractMicroServiceController
14{
15
16    /**
17     * Display the specified resource.
18     *
19     * @param  \Illuminate\Http\Request  $request
20     * @return \Illuminate\Http\JsonResponse
21     */
22    public function show(Request $request)
23    {
24        $request->validate([
25            'input' => 'required',
26            'value' => 'required'
27        ]);
28
29        try {
30            resolve(GeolocValidator::class)->validate();
31
32            $output = ($request->output && $request->ouput !== "") ? explode(',', $request->output) : null;
33
34            return response()->json(resolve(ServiceInterface::class)->output($output));
35
36        } catch (\Exception $e) {
37            Log::debug('Unable to get geolocation: ' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
38            return response()->json(["status" => "ko", "message" => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
39        }
40    }
41
42    public function index(Request $request)
43    {
44        $request->validate([
45            'input' => 'required',
46            'values' => 'required'
47        ]);
48
49        $values = array_map(function($value) {
50            return trim($value);
51        }, explode(',', $request->values));
52
53        $output = ($request->output && $request->ouput !== "") ? explode(',', $request->output) : null;
54
55        $result = [];
56        $params = $request->all();
57        foreach($values as $value) {
58            try {
59                $params['value'] = $value;
60                $request->replace($params);
61                resolve(GeolocValidator::class)->validate();
62
63                $serviceGeoloc = resolve(ServiceInterface::class);
64                $serviceGeoloc->value($value);
65
66                $result[] = $serviceGeoloc->output($output);
67            } catch(\Exception $e) {
68                Log::debug('Unable to get geolocation: ' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
69            }
70        }
71
72        return $result;
73    }
74}