Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace RestorePoint\Adapters\RemoteFilesDriver;
- use RestorePoint\Traits\FilesystemTrait;
- use RestorePoint\Adapters\Service\ServiceInterface;
- use RestorePoint\Exception;
- use Cake\Filesystem\File;
- use Kunnu\Dropbox\DropboxFile;
- class DropboxFilesDriver implements RemoteFilesDriverInterface {
- use FilesystemTrait;
- private $service;
- public function __construct(ServiceInterface $service) {
- $this->service = $service->getService();
- }
- public function handle() {
- return 'Dropbox';
- }
- public function fileExists($filename, $folder) {
- $folder = ltrim($folder, '/');
- try {
- $this->service->getMetadata("/{$folder}/{$filename}", ['include_deleted' => false]);
- return true;
- } catch (\Exception $e) {
- return false;
- }
- }
- public function deleteFile($file) {
- $this->service->delete($file);
- }
- public function folderExists($folder) {
- $folder = '/' . ltrim($folder, '/');
- try {
- $folder = $this->service->getMetadata($folder, ['include_deleted' => false]);
- return $folder->getPathLower();
- } catch (\Exception $e) {
- return false;
- }
- }
- public function makeFolder($folder) {
- $folder = '/' . ltrim($folder, '/');
- try {
- $folder = $this->service->createFolder($folder);
- return $folder->getPathLower();
- } catch (\Exception $e) {
- return $folder;
- }
- }
- public function getSpaceRemaining() {
- $data = $this->service->getSpaceUsage();
- if (!isset($data['allocation']['allocated']) || !isset($data['used'])) {
- throw new Exception(__CLASS__ . ': Could not get disk space left.');
- }
- return $data['allocation']['allocated'] - $data['used'];
- }
- public function listFilesByCreated($folder) {
- $folder = '/' . ltrim($folder, '/');
- $files = $this->service->listFolder($folder, ['include_deleted' => false, 'recursive' => false])->getItems();
- $filesSorted = $files->sortByDesc(function ($item, $key) {
- return strtotime($item->getClientModified());
- });
- $filesFormatted = [];
- foreach ($filesSorted->all() as $index => $file) {
- $filesFormatted[$index] = array(
- 'name' => $file->getName(),
- 'id' => $file->getPathLower(),
- 'created' => strtotime($file->getClientModified())
- );
- }
- return $filesFormatted;
- }
- public function addFile(File $file, $folder, $chunkSizeBytes) {
- $path = rtrim($folder, '/') . '/' . $file->name;
- $fileContainer = new DropboxFile($file->pwd());
- $dropboxFile = $this->service->uploadChunked(
- $fileContainer, $path, $file->size(), $chunkSizeBytes, ['autorename' => false]
- );
- return $dropboxFile->getName();
- }
- public function download($file, $destination) {
- $this->service->download($file, $destination);
- return $destination;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement