Added Download file, play for homebrews and ZIP explorer.
This commit is contained in:
@@ -8,6 +8,8 @@ use Illuminate\Http\Client\ConnectionException;
|
||||
use Illuminate\Http\UploadedFile;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class FileServersService {
|
||||
|
||||
@@ -69,15 +71,38 @@ class FileServersService {
|
||||
* @param EntryFile $file
|
||||
* @return string
|
||||
*/
|
||||
public function getDownloadFileUrl( EntryFile $file ): string
|
||||
public function getDownloadFileUrl( EntryFile $file, bool $countDownload = true ): string
|
||||
{
|
||||
$serverKey = $this->getEntryFileServerKey( $file );
|
||||
$url = $this->servers[$serverKey]['download'] ?? "#";
|
||||
if( $url === "#" )
|
||||
return $url;
|
||||
|
||||
return $url . "&" . http_build_query( [ 'filename' => $file->filename, 'filepath' => $file->filepath ] );
|
||||
$args = [ 'filename' => $file->filename, 'filepath' => $file->filepath ];
|
||||
if( !$countDownload )
|
||||
$args['count_download'] = false;
|
||||
|
||||
return $url . "&" . http_build_query( $args );
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function getArchiveExplorerUrl( EntryFile $file ): ?string
|
||||
{
|
||||
if( !Str::endsWith( $file->filename, ['zip', 'rar', '7z'] ) )
|
||||
return null;
|
||||
|
||||
$serverKey = $this->getEntryFileServerKey( $file );
|
||||
$url = $this->servers[$serverKey]['file_explorer'] ?? "#";
|
||||
|
||||
if( $url === "#" )
|
||||
return null;
|
||||
|
||||
$args = [ 'filename' => $file->filename, 'filepath' => $file->filepath,
|
||||
'zeus' => $this->generateZeusToken(\Auth::user()->user_id ?? 0, $this->servers[$serverKey]['base_url'], 'Fileexplorer')
|
||||
];
|
||||
|
||||
return $url . "&" . http_build_query( $args );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -137,11 +162,13 @@ class FileServersService {
|
||||
|
||||
foreach( $this->servers as $serverKey => $server ){
|
||||
|
||||
$response = Http::withHeaders([])
|
||||
$token = $this->generateZeusToken( $userId, $server['base_url'], "Deletefile" );
|
||||
|
||||
$response = Http::asForm()->withHeaders([])
|
||||
->post( $server['delete_file'], [
|
||||
'filepath' => $filePath,
|
||||
'filename' => $fileName,
|
||||
'zeus' => $this->generateZeusToken( $userId, $server['base_url'], "Deletefile" ),
|
||||
'zeus' => $token,
|
||||
]);
|
||||
|
||||
if (!$response->successful()) {
|
||||
|
||||
@@ -63,8 +63,10 @@ class SubmissionsService {
|
||||
if( $files === [] )
|
||||
return [];
|
||||
|
||||
$service = app(FileServersService::class);
|
||||
|
||||
return array_map(
|
||||
function( string $uuid ) {
|
||||
function( string $uuid ) use ($service) {
|
||||
$file = EntryFile::where('file_uuid', $uuid)->first();
|
||||
|
||||
if( $file )
|
||||
@@ -78,6 +80,9 @@ class SubmissionsService {
|
||||
'error' => null,
|
||||
'uuid' => $uuid,
|
||||
'state' => $file->state,
|
||||
'file_explorer' => $service->getArchiveExplorerUrl($file),
|
||||
'file_explorer_files' => null,
|
||||
'download_url' => $service->getDownloadFileUrl($file, false),
|
||||
'can_be_online_patched' => EntryHelpers::enableOnlinePatcherBasedOnExtension($file['filename']),
|
||||
'meta_online_patcher' => $file->online_patcher,
|
||||
'meta_secondary_online_patcher' => $file->secondary_online_patcher,
|
||||
@@ -98,6 +103,9 @@ class SubmissionsService {
|
||||
'error' => null,
|
||||
'uuid' => $uuid,
|
||||
'state' => $file['state'],
|
||||
'file_explorer' => null,
|
||||
'file_explorer_files' => null,
|
||||
'download_url' => null,
|
||||
'can_be_online_patched' => EntryHelpers::enableOnlinePatcherBasedOnExtension($file['filename']),
|
||||
'meta_online_patcher' => false,
|
||||
'meta_secondary_online_patcher' => false,
|
||||
@@ -707,10 +715,10 @@ class SubmissionsService {
|
||||
$needDeletion = array_diff( $existingUuids, $requestUuids );
|
||||
if( !empty( $needDeletion ) ){
|
||||
$userId = \Auth::user()->user_id;
|
||||
EntryFile::where('entry_id', $entryId)->whereIn('file_uuid', $needDeletion)->get()->each( function ( $f ) use ( $userId ) {
|
||||
EntryFile::where('entry_id', $entryId)->whereIn('file_uuid', $needDeletion)->whereNot('state', 'archived')->get()->each( function ( $f ) use ( $userId ) {
|
||||
DeleteFile::dispatch( $f->filepath, $f->filename, $userId);
|
||||
});
|
||||
EntryFile::where('entry_id', $entryId)->whereIn('file_uuid', $needDeletion)->delete();
|
||||
EntryFile::where('entry_id', $entryId)->whereIn('file_uuid', $needDeletion)->whereNot('state', 'archived')->delete();
|
||||
}
|
||||
|
||||
$needAddition = array_diff( $requestUuids, $existingUuids );
|
||||
|
||||
Reference in New Issue
Block a user