ApiProxyController   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 14
c 0
b 0
f 0
dl 0
loc 41
ccs 0
cts 15
cp 0
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 5 1
A callApi() 0 20 3
1
<?php
2
3
namespace Napp\Core\Api\Controllers;
4
5
use Illuminate\Http\JsonResponse;
6
use Illuminate\Http\Request;
7
8
/**
9
 * Class ApiProxyController.
10
 */
11
class ApiProxyController extends ApiInternalController
12
{
13
    /**
14
     * @param string  $endpoint
15
     * @param Request $request
16
     *
17
     * @return JsonResponse
18
     */
19
    public function __invoke(string $endpoint, Request $request): JsonResponse
20
    {
21
        $response = $this->callApi($endpoint, $request);
22
23
        return response()->json($response);
24
    }
25
26
    /**
27
     * @param string  $endpoint
28
     * @param Request $request
29
     *
30
     * @return mixed
31
     */
32
    private function callApi(string $endpoint, Request $request)
33
    {
34
        $requestMethod = strtolower($request->getMethod());
35
        $arguments = $request->all();
36
        $url = "/api/{$endpoint}";
37
38
        $methodSupportsArguments = \in_array($requestMethod, ['post', 'put', 'patch']);
39
        $callArguments = [$url];
40
41
        if (true === $methodSupportsArguments) {
42
            $callArguments = [$url, $arguments];
43
44
            return $this->{$requestMethod}(...$callArguments);
45
        }
46
47
        if (false === empty($arguments)) {
48
            $callArguments = [$url . '?' . http_build_query($arguments)];
49
        }
50
51
        return $this->{$requestMethod}(...$callArguments);
52
    }
53
}
54