Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
50.00% |
1 / 2 |
CRAP | |
30.77% |
8 / 26 |
GeolocationController | |
0.00% |
0 / 1 |
|
50.00% |
1 / 2 |
35.88 | |
30.77% |
8 / 26 |
show | |
100.00% |
1 / 1 |
4 | |
100.00% |
8 / 8 |
|||
index | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 18 |
1 | <?php |
2 | |
3 | namespace Qmp\Laravel\Geolocation\Controllers; |
4 | |
5 | use App\Http\Controllers\Controller; |
6 | use Illuminate\Http\Response; |
7 | use Illuminate\Http\Request; |
8 | use Illuminate\Support\Facades\Log; |
9 | use Qmp\Laravel\Geolocation\Services\GeolocApiServices\ServiceInterface; |
10 | use Qmp\Laravel\Geolocation\Services\Validations\GeolocValidator; |
11 | use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController; |
12 | |
13 | class 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 | } |