File "StaticFileDeliveryValidator.php"
Full Path: /var/www/drive/foundation/src/Settings/Validators/StaticFileDeliveryValidator.php
File size: 2.17 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Common\Settings\Validators;
use Common\Files\Actions\CreateFileEntry;
use Common\Files\Actions\Deletion\PermanentlyDeleteEntries;
use Common\Files\Actions\StoreFile;
use Common\Files\FileEntryPayload;
use Common\Settings\DotEnvEditor;
use Common\Settings\Validators\SettingsValidator;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;
class StaticFileDeliveryValidator implements SettingsValidator
{
const KEYS = ['static_file_delivery'];
public function fails($values): bool|array
{
if (!$values['static_file_delivery']) {
return false;
}
$originalDelivery = config('common.site.static_file_delivery');
$originalDriver = config('common.site.uploads_disk_driver');
app(DotEnvEditor::class)->write([
'STATIC_FILE_DELIVERY' => $values['static_file_delivery'],
'UPLOADS_DISK_DRIVER' => 'local',
]);
$previewToken = Str::random(10);
$contents = Str::random(10);
$path = base_path('common/resources/defaults/lorem.html');
$uploadedFile = new UploadedFile(
$path,
basename($path),
'text/html',
filesize($path),
);
$payload = new FileEntryPayload([
'file' => $uploadedFile,
]);
$fileEntry = app(CreateFileEntry::class)->execute($payload);
$fileEntry->fill(['preview_token' => $previewToken])->save();
app(StoreFile::class)->execute($payload, ['file' => $uploadedFile]);
$response = Http::get(
url($fileEntry->url) . "?preview_token=$previewToken",
);
app(PermanentlyDeleteEntries::class)->execute([$fileEntry->id]);
app(DotEnvEditor::class)->write([
'STATIC_FILE_DELIVERY' => $originalDelivery,
'UPLOADS_DISK_DRIVER' => $originalDriver,
]);
if ($contents !== $response->body()) {
return [
'static_delivery_group' => __(
'Could not validate selected optimization. Is it enabled on the server?',
),
];
} else {
return false;
}
}
}