Add optional code param in upload request

This commit is contained in:
Nick Hansen 2024-08-09 21:44:27 +02:00 committed by GitHub
parent a918c95a56
commit 92ec35700e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -107,7 +107,7 @@ class UploadController extends Controller
} }
try { try {
$response = $this->saveMedia($response, $file, $user); $response = $this->saveMedia($response, $file, $user, param($request, 'code'));
} catch (Exception $e) { } catch (Exception $e) {
$this->updateUserQuota($request, $user->id, $file->getSize(), true); $this->updateUserQuota($request, $user->id, $file->getSize(), true);
throw $e; throw $e;
@ -118,6 +118,7 @@ class UploadController extends Controller
/** /**
* @param Request $request * @param Request $request
* @param Response $response * @param Response $response
* @param $code
* @return UploadedFileInterface * @return UploadedFileInterface
* @throws ValidationException * @throws ValidationException
*/ */
@ -182,11 +183,19 @@ class UploadController extends Controller
* @throws \League\Flysystem\FileExistsException * @throws \League\Flysystem\FileExistsException
* @throws \League\Flysystem\FileNotFoundException * @throws \League\Flysystem\FileNotFoundException
*/ */
protected function saveMedia(Response $response, UploadedFileInterface $file, $user) protected function saveMedia(Response $response, UploadedFileInterface $file, $user, $code)
{ {
do { if ($code === null) {
$code = humanRandomString(); do {
} while ($this->database->query('SELECT COUNT(*) AS `count` FROM `uploads` WHERE `code` = ?', $code)->fetch()->count > 0); $code = humanRandomString();
} while ($this->database->query('SELECT COUNT(*) AS `count` FROM `uploads` WHERE `code` = ?', $code)->fetch()->count > 0);
} else {
$existingCodeCount = $this->database->query('SELECT COUNT(*) AS `count` FROM `uploads` WHERE `code` = ?', $code)->fetch()->count;
if ($existingCodeCount > 0) {
$this->json['message'] = 'Custom url code already exists.';
return json($response, $this->json, 409);
}
}
$fileInfo = pathinfo($file->getClientFilename()); $fileInfo = pathinfo($file->getClientFilename());
$storagePath = "$user->user_code/$code.$fileInfo[extension]"; $storagePath = "$user->user_code/$code.$fileInfo[extension]";