2021-03-14 10:45:42 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Lib;
|
|
|
|
|
|
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
|
use Illuminate\Support\Facades\Route;
|
2021-08-16 18:47:31 +02:00
|
|
|
use Illuminate\Support\Str;
|
2021-03-14 10:45:42 +01:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Helper Class
|
|
|
|
|
*/
|
|
|
|
|
class Helper
|
|
|
|
|
{
|
2021-08-04 13:13:51 +02:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Package infos
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
private static $packageInfos;
|
|
|
|
|
|
2021-03-14 10:45:42 +01:00
|
|
|
/**
|
|
|
|
|
* Tells if the request is within apiV2 routes
|
|
|
|
|
*
|
|
|
|
|
* @param Request $request
|
|
|
|
|
* @return boolean
|
|
|
|
|
*/
|
|
|
|
|
public static function isRequestForApiV2(Request $request)
|
|
|
|
|
{
|
|
|
|
|
// Small hack to ensure to know if route is From APIv2
|
|
|
|
|
$routeName = static::getRouteName($request) ??
|
|
|
|
|
(strpos($request->path(), 'api/v2') === 0 ? 'apiV2.' : null) ?? 'none';
|
|
|
|
|
return strpos($routeName, 'apiV2.') === 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Tells if the request is within apiV1 routes
|
|
|
|
|
*
|
|
|
|
|
* @param Request $request
|
|
|
|
|
* @return boolean
|
|
|
|
|
*/
|
|
|
|
|
public static function isRequestForApiV1(Request $request): bool
|
|
|
|
|
{
|
|
|
|
|
// Small hack to ensure to know if route is From APIv1
|
|
|
|
|
$routePrefix = (strpos(static::getRoutePrefix($request), 'api/v1') ? 'v1' : null) ??
|
|
|
|
|
(strpos($request->path(), 'api/v1') === 0 ? 'v1' : null) ?? 'none';
|
|
|
|
|
return strpos($routePrefix, 'v1') === 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Try to get current route name
|
|
|
|
|
*
|
|
|
|
|
* @param Request $request
|
|
|
|
|
* @return string|null
|
|
|
|
|
*/
|
|
|
|
|
public static function getRouteName(Request $request)
|
|
|
|
|
{
|
|
|
|
|
return Route::currentRouteName() ?? ($request->route() ? $request->route()->getName() : null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Try to get current route prefix
|
|
|
|
|
*
|
|
|
|
|
* @param Request $request
|
|
|
|
|
* @return string|null
|
|
|
|
|
*/
|
|
|
|
|
public static function getRoutePrefix(Request $request)
|
|
|
|
|
{
|
|
|
|
|
return (Route::getCurrentRoute() ? Route::getCurrentRoute()->getPrefix() : null) ??
|
|
|
|
|
($request->route() ? $request->route()->getPrefix() : null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Try to get route from request
|
|
|
|
|
*
|
|
|
|
|
* @param Request $request
|
|
|
|
|
* @return \Illuminate\Routing\Route|null
|
|
|
|
|
*/
|
|
|
|
|
public static function getRoute(Request $request)
|
|
|
|
|
{
|
|
|
|
|
return Route::getRoutes()->getByName(static::getRouteName($request));
|
|
|
|
|
}
|
2021-08-04 13:13:51 +02:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get composer.json infos
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
public static function getPackageInfo(): array
|
|
|
|
|
{
|
|
|
|
|
if (!static::$packageInfos) {
|
|
|
|
|
static::$packageInfos = \json_decode(\file_get_contents(__DIR__ . '/../../composer.json'), true);
|
|
|
|
|
}
|
|
|
|
|
return static::$packageInfos;
|
|
|
|
|
}
|
2021-08-16 18:47:31 +02:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Undocumented function
|
|
|
|
|
*
|
|
|
|
|
* @param Request $request
|
|
|
|
|
* @return string|null
|
|
|
|
|
*/
|
|
|
|
|
public static function getBearerTokenFromRequest(Request $request): ?string
|
|
|
|
|
{
|
|
|
|
|
$header = $request->header('Authorization', '');
|
|
|
|
|
|
|
|
|
|
if (Str::contains($header, 'Bearer ')) {
|
|
|
|
|
$auths = \explode(',', $header);
|
|
|
|
|
foreach ($auths as $auth) {
|
|
|
|
|
if (Str::contains($auth, 'Bearer ')) {
|
|
|
|
|
return Str::substr($auth, 7);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2021-03-14 10:45:42 +01:00
|
|
|
}
|