1 <?php
2
3 namespace Skimia\ApiFusion\Routing;
4
5 use Illuminate\Foundation\Application;
6 use Illuminate\Http\Request;
7 use Dingo\Api\Http\Parser\Accept;
8 use Response;
9 use APIRoute;
10 use Skimia\ApiFusion\Http\Controllers\Api\SentinelSessionsController;
11
12 class RouteFusion
13 {
14 15 16
17 protected $app;
18
19 20 21
22 public function __construct(Application $application)
23 {
24 $this->app = $application;
25 }
26
27 public function apiIndexListing($api, $url = '/', $name = 'api-fusion.index')
28 {
29 $api->get($url, ['as' => $name, function (Request $request) {
30
31 $accept = $this->getCurrentAcceptHeader($request);
32
33 $routes = APIRoute::getRoutes($accept['version']);
34 $endpoints = [];
35 foreach ($routes as $route) {
36 $endpoints['endpoints'][] =
37 [
38 'path' => $route->getPath(),
39 'methods' => $route->getMethods(),
40 ];
41 }
42
43 return Response::make($endpoints, 200, [], ['options' => JSON_PRETTY_PRINT]);
44 }]);
45 }
46
47 public function apiLoginHTTP($api)
48 {
49 $sessions_class = SentinelSessionsController::class;
50 $api->post('login', $sessions_class.'@store');
51 $api->get('user', $sessions_class.'@user');
52
53 $api->get('sessions', $sessions_class.'@index');
54 $api->get('sessions/kill', $sessions_class.'@kill');
55 $api->get('sessions/kill/all', $sessions_class.'@killAll');
56 $api->get('sessions/kill/{code}', $sessions_class.'@killByCode');
57 }
58
59 public function apiLoginJWT($api)
60 {
61 $sessions_class = SentinelSessionsController::class;
62 $api->post('login', $sessions_class.'@storeToken');
63 $api->get('user', $sessions_class.'@user');
64
65 $api->get('sessions', $sessions_class.'@index');
66 $api->get('sessions/kill', $sessions_class.'@kill');
67 $api->get('sessions/kill/all', $sessions_class.'@killAll');
68 $api->get('sessions/kill/{code}', $sessions_class.'@killByCode');
69 }
70
71 public function getCurrentAcceptHeader($request = null)
72 {
73 if (! isset($request)) {
74 $request = Request::instance();
75 }
76
77 $config = $this->app['config']['api'];
78
79 $acceptClass = new Accept($config['standardsTree'], $config['subtype'], $config['version'], $config['defaultFormat']);
80
81 return $acceptClass->parse($request);
82 }
83 }
84