Advertisement
Guest User

Untitled

a guest
Jul 31st, 2019
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.13 KB | None | 0 0
  1. <?php
  2.  
  3. namespace RestorePoint\Adapters\RemoteFilesDriver;
  4.  
  5. use RestorePoint\Traits\FilesystemTrait;
  6. use RestorePoint\Adapters\Service\ServiceInterface;
  7. use RestorePoint\Exception;
  8. use Cake\Filesystem\File;
  9. use Kunnu\Dropbox\DropboxFile;
  10.  
  11. class DropboxFilesDriver implements RemoteFilesDriverInterface {
  12.  
  13.     use FilesystemTrait;
  14.    
  15.     private $service;
  16.  
  17.     public function __construct(ServiceInterface $service) {
  18.         $this->service = $service->getService();
  19.     }
  20.  
  21.     public function handle() {
  22.         return 'Dropbox';
  23.     }
  24.  
  25.     public function fileExists($filename, $folder) {
  26.         $folder = ltrim($folder, '/');
  27.         try {
  28.             $this->service->getMetadata("/{$folder}/{$filename}", ['include_deleted' => false]);
  29.             return true;
  30.         } catch (\Exception $e) {
  31.             return false;
  32.         }
  33.     }
  34.  
  35.     public function deleteFile($file) {
  36.         $this->service->delete($file);
  37.     }
  38.  
  39.     public function folderExists($folder) {
  40.         $folder = '/' . ltrim($folder, '/');
  41.         try {
  42.             $folder = $this->service->getMetadata($folder, ['include_deleted' => false]);
  43.             return $folder->getPathLower();
  44.         } catch (\Exception $e) {
  45.             return false;
  46.         }
  47.     }
  48.  
  49.     public function makeFolder($folder) {
  50.         $folder = '/' . ltrim($folder, '/');
  51.         try {
  52.             $folder = $this->service->createFolder($folder);
  53.             return $folder->getPathLower();
  54.         } catch (\Exception $e) {
  55.             return $folder;
  56.         }
  57.     }
  58.  
  59.     public function getSpaceRemaining() {
  60.         $data = $this->service->getSpaceUsage();
  61.         if (!isset($data['allocation']['allocated']) || !isset($data['used'])) {
  62.             throw new Exception(__CLASS__ . ': Could not get disk space left.');
  63.         }
  64.         return $data['allocation']['allocated'] - $data['used'];
  65.     }
  66.  
  67.     public function listFilesByCreated($folder) {
  68.         $folder = '/' . ltrim($folder, '/');
  69.         $files = $this->service->listFolder($folder, ['include_deleted' => false, 'recursive' => false])->getItems();
  70.         $filesSorted = $files->sortByDesc(function ($item, $key) {
  71.             return strtotime($item->getClientModified());
  72.         });
  73.         $filesFormatted = [];
  74.         foreach ($filesSorted->all() as $index => $file) {
  75.             $filesFormatted[$index] = array(
  76.                 'name' => $file->getName(),
  77.                 'id' => $file->getPathLower(),
  78.                 'created' => strtotime($file->getClientModified())
  79.             );
  80.         }
  81.         return $filesFormatted;
  82.     }
  83.  
  84.     public function addFile(File $file, $folder, $chunkSizeBytes) {
  85.         $path = rtrim($folder, '/') . '/' . $file->name;
  86.         $fileContainer = new DropboxFile($file->pwd());
  87.         $dropboxFile = $this->service->uploadChunked(
  88.                 $fileContainer, $path, $file->size(), $chunkSizeBytes, ['autorename' => false]
  89.         );
  90.         return $dropboxFile->getName();
  91.     }
  92.  
  93.     public function download($file, $destination) {
  94.         $this->service->download($file, $destination);
  95.         return $destination;
  96.     }
  97.  
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement