From 1e77fc6142c623ba6228c17890e49e1bf6dfca03 Mon Sep 17 00:00:00 2001 From: Anton Zabolotnikob Date: Tue, 8 Jul 2025 16:20:01 +0500 Subject: [PATCH 1/2] fix: route versioning --- app/Providers/AppServiceProvider.php | 54 ++-------------------------- 1 file changed, 3 insertions(+), 51 deletions(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 35521b9..d10bb35 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,67 +3,19 @@ namespace App\Providers; use App\Enums\VersionEnum; -use Illuminate\Routing\Route; -use Illuminate\Routing\RouteRegistrar; -use Illuminate\Support\Facades\Route as RouteFacade; + use Illuminate\Support\ServiceProvider; +use RonasIT\Support\Contracts\VersionEnumContract; class AppServiceProvider extends ServiceProvider { public function boot(): void { - /** - * Specify that the route version must be in the range of given values inclusive. - * - * @param VersionEnum|null $start - * @param VersionEnum|null $end - * @param string|null $param (default is 'version') - * @param Route|null $instance - * - * @return Route|RouteRegistrar - */ - $versionRange = function (?VersionEnum $start, ?VersionEnum $end, ?string $param, ?Route $instance = null) { - if (!$param) { - $param = 'version'; - } - - $versions = array_diff(VersionEnum::values(), config('app.disabled_api_versions')); - - $versions = array_filter($versions, function ($version) use ($start, $end) { - $result = true; - - if (!empty($start)) { - $result &= version_compare($version, $start->value, '>='); - } - - if (!empty($end)) { - $result &= version_compare($version, $end->value, '<='); - } - - return $result; - }); - - return (!empty($instance)) - ? $instance->whereIn($param, $versions) - : RouteFacade::whereIn($param, $versions); - }; - - Route::macro('versionRange', fn (VersionEnum $from, VersionEnum $to, $param = null) => $versionRange($from, $to, $param, $this)); - - Route::macro('versionFrom', fn (VersionEnum $from, $param = null) => $versionRange($from, null, $param, $this)); - - Route::macro('versionTo', fn (VersionEnum $to, $param = null) => $versionRange(null, $to, $param, $this)); - - RouteFacade::macro('versionRange', fn (VersionEnum $from, VersionEnum $to, $param = null) => $versionRange($from, $to, $param)); - - RouteFacade::macro('versionFrom', fn (VersionEnum $from, $param = null) => $versionRange($from, null, $param)); - - RouteFacade::macro('versionTo', fn (VersionEnum $to, $param = null) => $versionRange(null, $to, $param)); - RouteFacade::macro('version', fn (VersionEnum $version) => RouteFacade::prefix('v' . $version->value)); } public function register() { + $this->app->bind(VersionEnumContract::class, fn () => VersionEnum::class); } } From 88e0f0452e8e2148f47e42118aa8ae146421e6b4 Mon Sep 17 00:00:00 2001 From: Anton Zabolotnikob Date: Tue, 8 Jul 2025 16:21:19 +0500 Subject: [PATCH 2/2] fix: route versioning --- app/Providers/AppServiceProvider.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index d10bb35..5dbc102 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,7 +3,6 @@ namespace App\Providers; use App\Enums\VersionEnum; - use Illuminate\Support\ServiceProvider; use RonasIT\Support\Contracts\VersionEnumContract; @@ -11,7 +10,6 @@ class AppServiceProvider extends ServiceProvider { public function boot(): void { - } public function register()