Skip to content

Commit

Permalink
Revert "refactor"
Browse files Browse the repository at this point in the history
This reverts commit d6b5981.
  • Loading branch information
Mohammad-Alavi committed Dec 3, 2022
1 parent 2add121 commit c1f9143
Showing 1 changed file with 65 additions and 36 deletions.
101 changes: 65 additions & 36 deletions Loaders/RoutesLoaderTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,58 +33,55 @@ public function runRoutesAutoLoader(): void
*/
private function loadApiContainerRoutes(string $containerPath): void
{
$apiRoutesPath = $this->getRoutesPathForUI($containerPath, 'API');
// Build the container api routes path
$apiRoutesPath = $containerPath . '/UI/API/Routes';
// Build the namespace from the path
$controllerNamespace = $containerPath . '\\UI\API\Controllers';

if (File::isDirectory($apiRoutesPath)) {
$files = $this->getFilesSortedByName($apiRoutesPath);
$files = File::allFiles($apiRoutesPath);
$files = Arr::sort($files, function ($file) {
return $file->getFilename();
});
foreach ($files as $file) {
$this->loadApiRoute($file);
$this->loadApiRoute($file, $controllerNamespace);
}
}
}

private function getRoutesPathForUI(string $containerPath, string $ui): string
{
return $this->getUIPathForContainer($containerPath, $ui) . DIRECTORY_SEPARATOR . 'Routes';
}

private function getUIPathForContainer(string $containerPath, string $ui): string
{
return $containerPath . DIRECTORY_SEPARATOR . 'UI' . DIRECTORY_SEPARATOR . $ui;
}

/**
* @param string $apiRoutesPath
* @return array|SplFileInfo[]
* @param $file
* @param $controllerNamespace
*/
private function getFilesSortedByName(string $apiRoutesPath): array
{
$files = File::allFiles($apiRoutesPath);
$files = Arr::sort($files, function ($file) {
return $file->getFilename();
});
return $files;
}

private function loadApiRoute(SplFileInfo $file): void
private function loadApiRoute($file, $controllerNamespace): void
{
$routeGroupArray = $this->getApiRouteGroup($file);
$routeGroupArray = $this->getRouteGroup($file, $controllerNamespace);

Route::group($routeGroupArray, function ($router) use ($file) {
require $file->getPathname();
});
}

public function getApiRouteGroup(SplFileInfo|string $endpointFileOrPrefixString): array
/**
* @param $endpointFileOrPrefixString
* @param null $controllerNamespace
*
* @return array
*/
public function getRouteGroup($endpointFileOrPrefixString, $controllerNamespace = null): array
{
return [
'namespace' => $controllerNamespace,
'middleware' => $this->getMiddlewares(),
'domain' => $this->getApiUrl(),
// If $endpointFileOrPrefixString is a file then get the version name from the file name, else if string use that string as prefix
'prefix' => is_string($endpointFileOrPrefixString) ? $endpointFileOrPrefixString : $this->getApiVersionPrefix($endpointFileOrPrefixString),
];
}

/**
* @return array
*/
private function getMiddlewares(): array
{
return array_filter([
Expand All @@ -93,6 +90,9 @@ private function getMiddlewares(): array
]);
}

/**
* @return null|string
*/
private function getRateLimitMiddleware(): ?string
{
$rateLimitMiddleware = null;
Expand All @@ -108,17 +108,30 @@ private function getRateLimitMiddleware(): ?string
return $rateLimitMiddleware;
}

private function getApiUrl(): string
/**
* @return mixed
*/
private function getApiUrl()
{
return Config::get('apiato.api.url');
}

private function getApiVersionPrefix(SplFileInfo $file): string
/**
* @param $file
*
* @return string
*/
private function getApiVersionPrefix($file): string
{
return Config::get('apiato.api.prefix') . (Config::get('apiato.api.enable_version_prefix') ? $this->getRouteFileVersionFromFileName($file) : '');
}

private function getRouteFileVersionFromFileName(SplFileInfo $file): string|bool
/**
* @param $file
*
* @return string|bool
*/
private function getRouteFileVersionFromFileName($file): string|bool
{
$fileNameWithoutExtension = $this->getRouteFileNameWithoutExtension($file);

Expand All @@ -136,9 +149,14 @@ private function getRouteFileVersionFromFileName(SplFileInfo $file): string|bool
return $apiVersion;
}

private function getRouteFileNameWithoutExtension(SplFileInfo $file): string
/**
* @param SplFileInfo $file
*
* @return mixed
*/
private function getRouteFileNameWithoutExtension(SplFileInfo $file): mixed
{
return pathinfo($file->getFilename(), PATHINFO_FILENAME);
return pathinfo($file->getFileName())['filename'];
}

/**
Expand All @@ -148,19 +166,30 @@ private function getRouteFileNameWithoutExtension(SplFileInfo $file): string
*/
private function loadWebContainerRoutes($containerPath): void
{
$webRoutesPath = $this->getRoutesPathForUI($containerPath, 'WEB');
// build the container web routes path
$webRoutesPath = $containerPath . '/UI/WEB/Routes';
// build the namespace from the path
$controllerNamespace = $containerPath . '\\UI\WEB\Controllers';

if (File::isDirectory($webRoutesPath)) {
$files = $this->getFilesSortedByName($webRoutesPath);
$files = File::allFiles($webRoutesPath);
$files = Arr::sort($files, function ($file) {
return $file->getFilename();
});
foreach ($files as $file) {
$this->loadWebRoute($file);
$this->loadWebRoute($file, $controllerNamespace);
}
}
}

private function loadWebRoute(SplFileInfo $file): void
/**
* @param $file
* @param $controllerNamespace
*/
private function loadWebRoute($file, $controllerNamespace): void
{
Route::group([
'namespace' => $controllerNamespace,
'middleware' => ['web'],
], function ($router) use ($file) {
require $file->getPathname();
Expand Down

0 comments on commit c1f9143

Please sign in to comment.