]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fixes in Dropbox API, try to catch Dropbox exceptions, implement rename and copy...
authorMichael Gapczynski <mtgap@owncloud.com>
Wed, 27 Jun 2012 19:23:26 +0000 (15:23 -0400)
committerMichael Gapczynski <mtgap@owncloud.com>
Wed, 27 Jun 2012 19:23:49 +0000 (15:23 -0400)
3rdparty/Dropbox/API.php
apps/files_external/lib/dropbox.php

index cff6c35c7fbbda510e92baa205dcd3d317f782b6..8cdce678e1c8101d756cd72d36f4d9fbb49c18df 100644 (file)
@@ -139,7 +139,7 @@ class Dropbox_API {
     public function copy($from, $to, $root = null) {\r
 \r
         if (is_null($root)) $root = $this->root;\r
-        $response = $this->oauth->fetch($this->api_url . 'fileops/copy', array('from_path' => $from, 'to_path' => $to, 'root' => $root));\r
+        $response = $this->oauth->fetch($this->api_url . 'fileops/copy', array('from_path' => $from, 'to_path' => $to, 'root' => $root), 'POST');\r
 \r
         return json_decode($response['body'],true);\r
 \r
@@ -178,7 +178,7 @@ class Dropbox_API {
     public function delete($path, $root = null) {\r
 \r
         if (is_null($root)) $root = $this->root;\r
-        $response = $this->oauth->fetch($this->api_url . 'fileops/delete', array('path' => $path, 'root' => $root));\r
+        $response = $this->oauth->fetch($this->api_url . 'fileops/delete', array('path' => $path, 'root' => $root), 'POST');\r
         return json_decode($response['body']);\r
 \r
     }\r
@@ -196,7 +196,7 @@ class Dropbox_API {
     public function move($from, $to, $root = null) {\r
 \r
         if (is_null($root)) $root = $this->root;\r
-        $response = $this->oauth->fetch($this->api_url . 'fileops/move', array('from_path' => rawurldecode($from), 'to_path' => rawurldecode($to), 'root' => $root));\r
+        $response = $this->oauth->fetch($this->api_url . 'fileops/move', array('from_path' => rawurldecode($from), 'to_path' => rawurldecode($to), 'root' => $root), 'POST');\r
 \r
         return json_decode($response['body'],true);\r
 \r
index e3fbb2449968e4d6362303343b19edafd1f852b4..35663d431f8e30637c7fc10f49156653451f5143 100755 (executable)
@@ -70,11 +70,16 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
        }
 
        public function mkdir($path) {
-               return $this->dropbox->createFolder($path);
+               try {
+                       $this->dropbox->createFolder($path);
+                       return true;
+               } catch (Exception $exception) {
+                       return false;
+               }
        }
 
        public function rmdir($path) {
-               return $this->dropbox->delete($path);
+               return $this->unlink($path);
        }
 
        public function opendir($path) {
@@ -114,11 +119,11 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
        }
 
        public function is_readable($path) {
-               return self::file_exists($path);
+               return $this->file_exists($path);
        }
 
        public function is_writable($path) {
-               return self::file_exists($path);
+               return $this->file_exists($path);
        }
 
        public function file_exists($path) {
@@ -132,7 +137,30 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
        }
 
        public function unlink($path) {
-               return $this->dropbox->delete($path);
+               try {
+                       $this->dropbox->delete($path);
+                       return true;
+               } catch (Exception $exception) {
+                       return false;
+               }
+       }
+
+       public function rename($path1, $path2) {
+               try {
+                       $this->dropbox->move($path1, $path2);
+                       return true;
+               } catch (Exception $exception) {
+                       return false;
+               }
+       }
+
+       public function copy($path1, $path2) {
+               try {
+                       $this->dropbox->copy($path1, $path2);
+                       return true;
+               } catch (Exception $exception) {
+                       return false;
+               }
        }
 
        public function fopen($path, $mode) {
@@ -140,8 +168,13 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
                        case 'r':
                        case 'rb':
                                $tmpFile = OC_Helper::tmpFile();
-                               file_put_contents($tmpFile, $this->dropbox->getFile($path));
-                               return fopen($tmpFile, 'r');
+                               try {
+                                       $data = $this->dropbox->getFile($path);
+                                       file_put_contents($tmpFile, $data);
+                                       return fopen($tmpFile, 'r');
+                               } catch (Exception $exception) {
+                                       return false;
+                               }
                        case 'w':
                        case 'wb':
                        case 'a':
@@ -174,9 +207,11 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
        public function writeBack($tmpFile) {
                if (isset(self::$tempFiles[$tmpFile])) {
                        $handle = fopen($tmpFile, 'r');
-                       $response = $this->dropbox->putFile(self::$tempFiles[$tmpFile], $handle);
-                       if ($response) {
+                       try {
+                               $response = $this->dropbox->putFile(self::$tempFiles[$tmpFile], $handle);
                                unlink($tmpFile);
+                       } catch (Exception $exception) {
+                               
                        }
                }
        }
@@ -191,10 +226,12 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
        }
 
        public function free_space($path) {
-               if ($info = $this->dropbox->getAccountInfo()) {
+               try {
+                       $info = $this->dropbox->getAccountInfo();
                        return $info['quota_info']['quota'] - $info['quota_info']['normal'];
+               } catch (Exception $exception) {
+                       return false;
                }
-               return false;
        }
 
        public function touch($path, $mtime = null) {