prefixGallery = env("GALLERY_PREFIX","/gallery/"); } /** * Возвращает список файлов в галереи * @param string $id * @return JsonResponse * * @OA\Get( * path="/api/access/gallery/{id}", * tags={"use"}, * operationId="getGallery", * description="Get list files in gallery", * @OA\Parameter( * name="id", * in="path", * required=true, * description="Идентификатор галереи", * @OA\Schema( * type="string" * ) * ), * @OA\Response( * response=400, * description="Invalid input" * ), * @OA\Response( * response=200, * description="successful operation", * @OA\JsonContent(ref="#/components/schemas/Gallery"), * ), * ) */ public function listPhotoInGallery(string $id): JsonResponse { $this->checkFilePath($this->prefixGallery . $id,"Id is not valid"); $model = new \App\DTO\Gallery(); $model->name = $id; $model->files = Storage::allFiles($this->prefixGallery . $id); $model->files=array_map(function ($item){ $ar=explode('/',$item); return $ar[count($ar)-1]; },$model->files); return response()->json($model); } /** * Отдает запрошенный файл из указанной галереи * @param string $galleryId * @param string $fileId * @return StreamedResponse * * @OA\Get( * path="/api/access/gallery/file/{galleryId}/{fileId}", * tags={"use"}, * operationId="getPhoto", * description="Get file from gallery", * @OA\Parameter( * name="galleryId", * in="path", * description="Идентификатор галереи", * required=true, * @OA\Schema( * type="string" * ) * ), * @OA\Parameter( * name="fileId", * in="path", * description="Идентификатор файла", * required=true, * @OA\Schema( * type="string" * ) * ), * @OA\Response( * response=400, * description="Invalid input" * ), * @OA\Response( * response=200, * description="Download file" * ), * ) */ public function getFile(string $galleryId, string $fileId): StreamedResponse { $this->checkFilePath($this->prefixGallery . $galleryId,"GalleryId is not valid"); $this->checkFilePath($this->prefixGallery . $galleryId."/".$fileId,"FileId is not valid"); return Storage::download($this->prefixGallery . $galleryId."/".$fileId,null,[]); } /** * Проверка на наличие файла, выброс ошибки в случае отсутствия * @param string $path * @param string $textError * @return void */ private function checkFilePath(string $path, string $textError): void { $result=Storage::exists($path); if (!$result) { abort(400, $textError); } } }