From 98c7d40fcdebeffe3fa335c93df4c97c7fabf5d9 Mon Sep 17 00:00:00 2001
From: Michael Gapczynski <mtgap@owncloud.com>
Date: Mon, 13 Aug 2012 17:07:56 -0400
Subject: [PATCH] Throw exception in Dropbox and Google Drive storage
 constructors if parameters are not correct

---
 apps/files_external/lib/dropbox.php | 20 ++++++++++++++++----
 apps/files_external/lib/google.php  | 18 +++++++++++-------
 2 files changed, 27 insertions(+), 11 deletions(-)

diff --git a/apps/files_external/lib/dropbox.php b/apps/files_external/lib/dropbox.php
index c849db3843..a27d9d7c36 100755
--- a/apps/files_external/lib/dropbox.php
+++ b/apps/files_external/lib/dropbox.php
@@ -30,9 +30,13 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 	private static $tempFiles = array();
 
 	public function __construct($params) {
-		$oauth = new Dropbox_OAuth_Curl($params['app_key'], $params['app_secret']);
-		$oauth->setToken($params['token'], $params['token_secret']);
-		$this->dropbox = new Dropbox_API($oauth, 'dropbox');
+		if (isset($params['configured']) && $params['configured'] == 'true' && isset($params['app_key']) && isset($params['app_secret']) && isset($params['token']) && isset($params['token_secret'])) {
+			$oauth = new Dropbox_OAuth_Curl($params['app_key'], $params['app_secret']);
+			$oauth->setToken($params['token'], $params['token_secret']);
+			$this->dropbox = new Dropbox_API($oauth, 'dropbox');
+		} else {
+			throw new Exception('Creating OC_Filestorage_Dropbox storage failed');
+		}
 	}
 
 	private function getMetaData($path, $list = false) {
@@ -43,6 +47,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 				try {
 					$response = $this->dropbox->getMetaData($path);
 				} catch (Exception $exception) {
+					OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
 					return false;
 				}
 				if ($response && isset($response['contents'])) {
@@ -63,6 +68,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 					$this->metaData[$path] = $response;
 					return $response;
 				} catch (Exception $exception) {
+					OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
 					return false;
 				}
 			}
@@ -74,6 +80,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 			$this->dropbox->createFolder($path);
 			return true;
 		} catch (Exception $exception) {
+			OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
 			return false;
 		}
 	}
@@ -141,6 +148,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 			$this->dropbox->delete($path);
 			return true;
 		} catch (Exception $exception) {
+			OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
 			return false;
 		}
 	}
@@ -150,6 +158,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 			$this->dropbox->move($path1, $path2);
 			return true;
 		} catch (Exception $exception) {
+			OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
 			return false;
 		}
 	}
@@ -159,6 +168,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 			$this->dropbox->copy($path1, $path2);
 			return true;
 		} catch (Exception $exception) {
+			OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
 			return false;
 		}
 	}
@@ -173,6 +183,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 					file_put_contents($tmpFile, $data);
 					return fopen($tmpFile, 'r');
 				} catch (Exception $exception) {
+					OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
 					return false;
 				}
 			case 'w':
@@ -211,7 +222,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 				$this->dropbox->putFile(self::$tempFiles[$tmpFile], $handle);
 				unlink($tmpFile);
 			} catch (Exception $exception) {
-				
+				OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
 			}
 		}
 	}
@@ -230,6 +241,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 			$info = $this->dropbox->getAccountInfo();
 			return $info['quota_info']['quota'] - $info['quota_info']['normal'];
 		} catch (Exception $exception) {
+			OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
 			return false;
 		}
 	}
diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php
index 2ad85d09d5..2b387f0c83 100644
--- a/apps/files_external/lib/google.php
+++ b/apps/files_external/lib/google.php
@@ -31,13 +31,17 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
 
 	private static $tempFiles = array();
 
-	public function __construct($arguments) {
-		$consumer_key = isset($arguments['consumer_key']) ? $arguments['consumer_key'] : 'anonymous';
-		$consumer_secret = isset($arguments['consumer_secret']) ? $arguments['consumer_secret'] : 'anonymous';
-		$this->consumer = new OAuthConsumer($consumer_key, $consumer_secret);
-		$this->oauth_token = new OAuthToken($arguments['token'], $arguments['token_secret']);
-		$this->sig_method = new OAuthSignatureMethod_HMAC_SHA1();
-		$this->entries = array();
+	public function __construct($params) {
+		if (isset($params['configured']) && $params['configured'] == 'true' && isset($params['token']) && isset($params['token_secret'])) {
+			$consumer_key = isset($params['consumer_key']) ? $params['consumer_key'] : 'anonymous';
+			$consumer_secret = isset($params['consumer_secret']) ? $params['consumer_secret'] : 'anonymous';
+			$this->consumer = new OAuthConsumer($consumer_key, $consumer_secret);
+			$this->oauth_token = new OAuthToken($params['token'], $params['token_secret']);
+			$this->sig_method = new OAuthSignatureMethod_HMAC_SHA1();
+			$this->entries = array();
+		} else {
+			throw new Exception('Creating OC_Filestorage_Google storage failed');
+		}
 	}
 
 	private function sendRequest($uri, $httpMethod, $postData = null, $extraHeaders = null, $isDownload = false, $returnHeaders = false, $isContentXML = true, $returnHTTPCode = false) {
-- 
GitLab