vito/app/SSH/Storage/Dropbox.php
Richard Anderson a73476c1dd
Edit & Download (local) Backups (#436)
* Allow editing of backups

* pint updates

* setup of backup download

* allow download for local backup files

* delete uploaded files on delete of BackupFile

* pint updates

* S3 upload & download fixes

* Deletion of backup files

* support $ARCH selector for s3 installation

* delete files when deleting backup

* fixed ui issue

* adjustment

* Use system temp path for downloads

---------

Co-authored-by: Saeed Vaziry <mr.saeedvaziry@gmail.com>
2025-01-25 21:59:35 +01:00

59 lines
1.5 KiB
PHP

<?php
namespace App\SSH\Storage;
use App\Exceptions\SSHCommandError;
use App\SSH\HasScripts;
use Illuminate\Support\Facades\Log;
class Dropbox extends AbstractStorage
{
use HasScripts;
public function upload(string $src, string $dest): array
{
$upload = $this->server->ssh()->exec(
$this->getScript('dropbox/upload.sh', [
'src' => $src,
'dest' => $dest,
'token' => $this->storageProvider->credentials['token'],
]),
'upload-to-dropbox'
);
$data = json_decode($upload, true);
if (isset($data['error'])) {
Log::error('Failed to upload to Dropbox', $data);
throw new SSHCommandError('Failed to upload to Dropbox');
}
return [
'size' => $data['size'] ?? null,
];
}
public function download(string $src, string $dest): void
{
$this->server->ssh()->exec(
$this->getScript('dropbox/download.sh', [
'src' => $src,
'dest' => $dest,
'token' => $this->storageProvider->credentials['token'],
]),
'download-from-dropbox'
);
}
public function delete(string $src): void
{
$this->server->ssh()->exec(
$this->getScript('dropbox/delete-file.sh', [
'src' => $src,
'token' => $this->storageProvider->credentials['token'],
]),
'delete-from-dropbox'
);
}
}