Files
mtdb_movie/common/Files/Response/RemoteFileResponse.php
maher 703f50a09d
Some checks failed
Build / run (push) Has been cancelled
first commit
2025-10-29 11:42:25 +01:00

54 lines
1.5 KiB
PHP
Executable File

<?php
namespace Common\Files\Response;
use Carbon\Carbon;
use Common\Files\FileEntry;
class RemoteFileResponse implements FileResponse
{
/**
* @param FileEntry $entry
* @param array $options
* @return mixed
*/
public function make(FileEntry $entry, $options): mixed
{
if ($options['disposition'] === 'attachment') {
$fileName = rawurlencode($entry->name);
return $this->getTemporaryUrl($entry, $options, [
'ResponseContentType' => 'application/octet-stream',
'ResponseContentDisposition' => "attachment;filename={$fileName}",
]);
} else {
if (config('common.site.use_presigned_s3_urls')) {
return $this->getTemporaryUrl($entry, $options, [
'ResponseContentType' => $entry->mime,
]);
} else {
return redirect(
$entry
->getDisk()
->url($entry->getStoragePath($options['useThumbnail'])),
);
}
}
}
private function getTemporaryUrl(
FileEntry $entry,
array $entryOptions,
array $urlOptions,
) {
return redirect(
$entry
->getDisk()
->temporaryUrl(
$entry->getStoragePath($entryOptions['useThumbnail']),
Carbon::now()->addMinutes(30),
$urlOptions,
),
);
}
}