Skip to content

Commit 3815c19

Browse files
authored
Merge pull request #588 from nickhnsn/patch-1
Add optional code param in upload request
2 parents a00fd5a + 92ec357 commit 3815c19

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

app/Controllers/UploadController.php

+14-5
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public function uploadEndpoint(Request $request, Response $response): Response
107107
}
108108

109109
try {
110-
$response = $this->saveMedia($response, $file, $user);
110+
$response = $this->saveMedia($response, $file, $user, param($request, 'code'));
111111
} catch (Exception $e) {
112112
$this->updateUserQuota($request, $user->id, $file->getSize(), true);
113113
throw $e;
@@ -118,6 +118,7 @@ public function uploadEndpoint(Request $request, Response $response): Response
118118
/**
119119
* @param Request $request
120120
* @param Response $response
121+
* @param $code
121122
* @return UploadedFileInterface
122123
* @throws ValidationException
123124
*/
@@ -182,11 +183,19 @@ protected function validateUser(Request $request, Response $response, UploadedFi
182183
* @throws \League\Flysystem\FileExistsException
183184
* @throws \League\Flysystem\FileNotFoundException
184185
*/
185-
protected function saveMedia(Response $response, UploadedFileInterface $file, $user)
186+
protected function saveMedia(Response $response, UploadedFileInterface $file, $user, $code)
186187
{
187-
do {
188-
$code = humanRandomString();
189-
} while ($this->database->query('SELECT COUNT(*) AS `count` FROM `uploads` WHERE `code` = ?', $code)->fetch()->count > 0);
188+
if ($code === null) {
189+
do {
190+
$code = humanRandomString();
191+
} while ($this->database->query('SELECT COUNT(*) AS `count` FROM `uploads` WHERE `code` = ?', $code)->fetch()->count > 0);
192+
} else {
193+
$existingCodeCount = $this->database->query('SELECT COUNT(*) AS `count` FROM `uploads` WHERE `code` = ?', $code)->fetch()->count;
194+
if ($existingCodeCount > 0) {
195+
$this->json['message'] = 'Custom url code already exists.';
196+
return json($response, $this->json, 409);
197+
}
198+
}
190199

191200
$fileInfo = pathinfo($file->getClientFilename());
192201
$storagePath = "$user->user_code/$code.$fileInfo[extension]";

0 commit comments

Comments
 (0)