Skip to content
Snippets Groups Projects
Verified Commit a81d174a authored by Jonas Leder's avatar Jonas Leder
Browse files

add image redirect

parent 38bf7808
No related branches found
No related tags found
No related merge requests found
......@@ -6,6 +6,7 @@ use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Aws\S3\S3Client;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
class ImageController extends AbstractController {
......@@ -100,4 +101,34 @@ class ImageController extends AbstractController {
]);
}
#[Route('/api/images/redirect', name: 'redirectImage', methods: ['GET'])]
public function redirectImage(Request $request){
if (!$request->query->has("path")) {
return new JsonResponse([
"success" => false,
"message" => "Path parameter is required"
], 422);
}
$command = $this->s3Client->getCommand('GetObject', [
'Bucket' => $_ENV["S3BUCKET"],
'Key' => 'img/' . $request->query->get("path")
]);
// Create a pre-signed URL for a request with duration of 10 miniutes
$presignedRequest = $this->s3Client->createPresignedRequest($command, '5 minutes');
// Get the actual presigned-url
$downloadURL = (string) $presignedRequest->getUri();
if($request->query->has("preview")) {
$encodedUrl = rtrim(strtr(base64_encode($downloadURL), '+/', '-_'), '=');
$path = "/rs:fit:0:" . $_ENV["IMGHEIGHT"] . ":1/g:no/{$encodedUrl}.webp";
$signature = rtrim(strtr(base64_encode(hash_hmac('sha256', $_ENV["IMGPROXY_SALT"].$path, $_ENV["IMGPROXY_KEY"], true)), '+/', '-_'), '=');
$downloadURL = $_ENV["IMGPROXY_URL"] . "/" . $signature . $path;
}
return new RedirectResponse($downloadURL);
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment