%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/common/Settings/Validators/ |
| Current File : /home/graphicd/public_html/vebto/common/Settings/Validators/StaticFileDeliveryValidator.php |
<?php
namespace Common\Settings\Validators;
use Common\Core\HttpClient;
use Common\Files\Actions\Deletion\PermanentlyDeleteEntries;
use Common\Files\Actions\UploadFile;
use Common\Settings\DotEnvEditor;
use Illuminate\Support\Str;
class StaticFileDeliveryValidator implements SettingsValidator
{
const KEYS = ['static_file_delivery'];
/**
* @inheritDoc
*/
public function fails($settings)
{
if ( ! $settings['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' => $settings['static_file_delivery'],
'UPLOADS_DISK_DRIVER' => 'local'
]);
$previewToken = Str::random(10);
$contents = Str::random(10);
$fileEntry = app(UploadFile::class)->execute('private', [
'contents' => $contents,
'name' => 'temp #' . Str::random(5),
'file_name' => Str::random(40),
'preview_token' => $previewToken,
'mime' => 'text/plain',
'type' => 'text',
'file_size' => 1,
'extension' => '.txt',
], []);
$response = app(HttpClient::class)->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) {
return ['static_delivery_group' => __('Could not validate selected optimization. Is it enabled on the server?')];
} else {
return false;
}
}
}