ApiTesterController::handle()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 28
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 22
nc 2
nop 1
dl 0
loc 28
rs 9.568
c 0
b 0
f 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: sheldon
5
 * Date: 18-4-19
6
 * Time: 上午9:26.
7
 */
8
9
namespace Yeelight\Http\Controllers\Backend\Tools\ApiTester;
10
11
use Illuminate\Http\Request;
12
use Yeelight\Http\Controllers\BaseController;
13
use Yeelight\Models\Tools\ApiTester\ApiTester;
14
use Yeelight\Services\Assets\Assets;
15
16
/**
17
 * Class ApiTesterController
18
 *
19
 * @category Yeelight
20
 *
21
 * @package Yeelight\Http\Controllers\Backend\Tools\ApiTester
22
 *
23
 * @author Sheldon Lee <[email protected]>
24
 *
25
 * @license https://opensource.org/licenses/MIT MIT
26
 *
27
 * @link https://www.yeelight.com
28
 */
29
class ApiTesterController extends BaseController
30
{
31
    /**
32
     * Index
33
     *
34
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
35
     */
36
    public function index()
37
    {
38
        $tester = new ApiTester();
39
40
        Assets::js('js/prism.js');
41
        Assets::css('css/prism.css');
42
43
        return view(
44
            'backend.tools.api_tester.index',
45
            [
46
                'routes' => $tester->getRoutes(),
47
                //'logs'   => ApiLogger::load(),
48
                'methodColors' => ApiTester::$methodColors,
49
                'header_description' => 'Api tester',
50
            ]
51
        );
52
    }
53
54
    /**
55
     * Handler
56
     *
57
     * @param Request $request Request
58
     *
59
     * @return array
60
     */
61
    public function handle(Request $request)
62
    {
63
        $method = $request->get('method');
64
        $uri = $request->get('uri');
65
        $user = $request->get('user');
66
        $all = $request->all();
67
        $keys = array_get($all, 'key', []);
68
        $vals = array_get($all, 'val', []);
69
        ksort($keys);
70
        ksort($vals);
71
        $parameters = [];
72
        foreach ($keys as $index => $key) {
73
            $parameters[$key] = array_get($vals, $index);
74
        }
75
        $parameters = array_filter(
76
            $parameters,
77
            function ($key) {
78
                return $key !== '';
79
            },
80
            ARRAY_FILTER_USE_KEY
81
        );
82
        $tester = new ApiTester();
83
        $response = $tester->call($method, $uri, $parameters, $user);
84
85
        return [
86
            'status'    => true,
87
            'message'   => 'success',
88
            'data'      => $tester->parseResponse($response),
89
        ];
90
    }
91
}
92