diff --git a/app/Http/Controllers/ImageController.php b/app/Http/Controllers/ImageController.php new file mode 100644 index 0000000..f16924a --- /dev/null +++ b/app/Http/Controllers/ImageController.php @@ -0,0 +1,40 @@ +input('category'); + $basePath = public_path("images"); + + // If category is provided, validate it + if ($category && !preg_match('/^[a-zA-Z0-9_\-]+$/', $category)) { + return response()->json(['error' => 'Invalid category'], 400); + } + + $path = $category ? "$basePath/$category" : $basePath; + + // Check if the directory exists + if (!is_dir($path)) { + return response()->json(['error' => 'Category not found'], 404); + } + + // Get all files recursively if category is null, otherwise limit to the specific category + $files = File::allFiles($path); + + // Generate URLs for all found files + $imageUrls = array_map(function ($file) use ($category) { + // Generate the relative URL for each image + $relativePath = isset($category) ? "images/$category/{$file->getRelativePath()}" : "images/{$file->getRelativePath()}"; + return url($relativePath . $file->getFilename()); + }, $files); + + return response()->json($imageUrls); + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 025e874..4a3e12c 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -30,8 +30,9 @@ public function boot(): void $this->routes(function () { Route::middleware('api') - ->prefix('api') - ->group(base_path('routes/api.php')); + ->prefix('api/v1') + ->as('v1:') + ->group(base_path('routes/v1/api.php')); Route::middleware('web') ->group(base_path('routes/web.php')); diff --git a/resources/js/Components/Translator.vue b/resources/js/Components/Translator.vue index 21d2434..6aa6e04 100644 --- a/resources/js/Components/Translator.vue +++ b/resources/js/Components/Translator.vue @@ -13,7 +13,7 @@ let flags = ref(), sortedFlags = ref(new Proxy({}, {})); // Lazy loading languages watch(showPopup, async (value) => { if (value && !flags.value) { - const localesPromise = await axios.get(route("locales.status")); + const localesPromise = await axios.get(route("v1:locales.status")); flags.value = localesPromise.data; sortedFlags.value = flags.value; } diff --git a/routes/api.php b/routes/v1/api.php similarity index 84% rename from routes/api.php rename to routes/v1/api.php index fd13a53..9be3e34 100644 --- a/routes/api.php +++ b/routes/v1/api.php @@ -1,5 +1,6 @@ name('locales.status'); Route::get('/clans', [LeaderboardController::class, 'index']); + +Route::prefix('images')->name('images.')->group(function () { + Route::get('/', [ImageController::class, 'index'])->name('index'); +});