aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_external
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2012-10-11 22:54:39 +0200
committerRobin Appelman <icewind@owncloud.com>2012-10-11 22:54:39 +0200
commitfb2d2bc2011c371ff1e4334f84494f15a84a07a2 (patch)
treeb5c20c842441ce4288038909daa5a158c8e74e80 /apps/files_external
parent5c6e9518edde10e0c23d0d734d2cc6d161fc15c0 (diff)
parentee28e35ba93032a3d43601c030d3d44df9b092f0 (diff)
downloadnextcloud-server-fb2d2bc2011c371ff1e4334f84494f15a84a07a2.tar.gz
nextcloud-server-fb2d2bc2011c371ff1e4334f84494f15a84a07a2.zip
merge master into filesystem
Diffstat (limited to 'apps/files_external')
-rw-r--r--apps/files_external/l10n/es_AR.php6
-rw-r--r--apps/files_external/l10n/ru_RU.php4
-rw-r--r--apps/files_external/lib/smb.php2
-rw-r--r--apps/files_external/lib/swift.php38
-rw-r--r--apps/files_external/lib/webdav.php3
-rw-r--r--apps/files_external/tests/amazons3.php63
-rw-r--r--apps/files_external/tests/config.php2
-rw-r--r--apps/files_external/tests/dropbox.php25
-rw-r--r--apps/files_external/tests/ftp.php25
-rw-r--r--apps/files_external/tests/google.php62
-rw-r--r--apps/files_external/tests/smb.php26
-rw-r--r--apps/files_external/tests/swift.php28
-rw-r--r--apps/files_external/tests/webdav.php26
13 files changed, 165 insertions, 145 deletions
diff --git a/apps/files_external/l10n/es_AR.php b/apps/files_external/l10n/es_AR.php
index 80d5729af42..055fbe782e7 100644
--- a/apps/files_external/l10n/es_AR.php
+++ b/apps/files_external/l10n/es_AR.php
@@ -1,4 +1,10 @@
<?php $TRANSLATIONS = array(
+"Access granted" => "Acceso permitido",
+"Error configuring Dropbox storage" => "Error al configurar el almacenamiento de Dropbox",
+"Grant access" => "Permitir acceso",
+"Fill out all required fields" => "Rellenar todos los campos requeridos",
+"Please provide a valid Dropbox app key and secret." => "Por favor, proporcioná un secreto y una contraseña válida para la aplicación Dropbox.",
+"Error configuring Google Drive storage" => "Error al configurar el almacenamiento de Google Drive",
"External Storage" => "Almacenamiento externo",
"Mount point" => "Punto de montaje",
"Backend" => "Motor",
diff --git a/apps/files_external/l10n/ru_RU.php b/apps/files_external/l10n/ru_RU.php
index 69cf7544dd9..4bd2e2e964f 100644
--- a/apps/files_external/l10n/ru_RU.php
+++ b/apps/files_external/l10n/ru_RU.php
@@ -1,4 +1,8 @@
<?php $TRANSLATIONS = array(
+"Access granted" => "Доступ разрешен",
+"Error configuring Dropbox storage" => "Ошибка при конфигурировании хранилища Dropbox",
+"Grant access" => "Предоставить доступ",
+"Fill out all required fields" => "Заполните все требуемые поля",
"External Storage" => "Внешние системы хранения данных",
"Mount point" => "Точка монтирования",
"Backend" => "Бэкэнд",
diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php
index d4882ed0249..8fcdd1f722f 100644
--- a/apps/files_external/lib/smb.php
+++ b/apps/files_external/lib/smb.php
@@ -61,7 +61,7 @@ class SMB extends \OC\Files\Storage\StreamWrapper{
}
public function filetype($path) {
- return (bool)@$this->opendir($path);//using opendir causes the same amount of requests and caches the content of the folder in one go
+ return (bool)@$this->opendir($path) ? 'dir' : 'file';//using opendir causes the same amount of requests and caches the content of the folder in one go
}
/**
diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php
index c67cf59df6b..8d402b25212 100644
--- a/apps/files_external/lib/swift.php
+++ b/apps/files_external/lib/swift.php
@@ -41,7 +41,7 @@ class SWIFT extends \OC\Files\Storage\Common{
* @return string
*/
private function getContainerName($path) {
- $path=trim($this->root.$path,'/');
+ $path=trim(trim($this->root,'/')."/".$path,'/.');
return str_replace('/','\\',$path);
}
@@ -72,11 +72,11 @@ class SWIFT extends \OC\Files\Storage\Common{
* @return CF_Container
*/
private function createContainer($path) {
- if($path=='' or $path=='/') {
+ if($path=='' or $path=='/' or $path=='.') {
return $this->conn->create_container($this->getContainerName($path));
}
$parent=dirname($path);
- if($parent=='' or $parent=='/') {
+ if($parent=='' or $parent=='/' or $parent=='.') {
$parentContainer=$this->rootContainer;
}else{
if(!$this->containerExists($parent)) {
@@ -102,6 +102,9 @@ class SWIFT extends \OC\Files\Storage\Common{
if(is_null($container)) {
return null;
}else{
+ if ($path=="/" or $path=='') {
+ return null;
+ }
try{
$obj=$container->get_object(basename($path));
$this->objects[$path]=$obj;
@@ -137,7 +140,7 @@ class SWIFT extends \OC\Files\Storage\Common{
private function createObject($path) {
$container=$this->getContainer(dirname($path));
if(!is_null($container)) {
- $container=$this->createContainer($path);
+ $container=$this->createContainer(dirname($path));
}
return $container->create_object(basename($path));
}
@@ -279,7 +282,7 @@ class SWIFT extends \OC\Files\Storage\Common{
$this->conn = new \CF_Connection($this->auth);
- if(!$this->containerExists($this->root)) {
+ if(!$this->containerExists('/')) {
$this->rootContainer=$this->createContainer('/');
}else{
$this->rootContainer=$this->getContainer('/');
@@ -393,6 +396,9 @@ class SWIFT extends \OC\Files\Storage\Common{
}
public function unlink($path) {
+ if($this->containerExists($path)) {
+ return $this->rmdir($path);
+ }
if($this->objectExists($path)) {
$container=$this->getContainer(dirname($path));
$container->delete_object(basename($path));
@@ -403,13 +409,13 @@ class SWIFT extends \OC\Files\Storage\Common{
}
public function fopen($path,$mode) {
- $obj=$this->getObject($path);
- if(is_null($obj)) {
- return false;
- }
switch($mode) {
case 'r':
case 'rb':
+ $obj=$this->getObject($path);
+ if (is_null($obj)) {
+ return false;
+ }
$fp = fopen('php://temp', 'r+');
$obj->stream($fp);
@@ -442,7 +448,7 @@ class SWIFT extends \OC\Files\Storage\Common{
}
public function free_space($path) {
- return 0;
+ return 1024*1024*1024*8;
}
public function touch($path,$mtime=null) {
@@ -483,7 +489,17 @@ class SWIFT extends \OC\Files\Storage\Common{
}
public function stat($path) {
+ $container=$this->getContainer($path);
+ if (!is_null($container)) {
+ return array(
+ 'mtime'=>-1,
+ 'size'=>$container->bytes_used,
+ 'ctime'=>-1
+ );
+ }
+
$obj=$this->getObject($path);
+
if(is_null($obj)) {
return false;
}
@@ -507,7 +523,7 @@ class SWIFT extends \OC\Files\Storage\Common{
$obj->save_to_filename($tmpFile);
return $tmpFile;
}else{
- return false;
+ return OCP\Files::tmpFile();
}
}
diff --git a/apps/files_external/lib/webdav.php b/apps/files_external/lib/webdav.php
index 70210b49ee7..7c61d06a018 100644
--- a/apps/files_external/lib/webdav.php
+++ b/apps/files_external/lib/webdav.php
@@ -133,6 +133,9 @@ class DAV extends \OC\Files\Storage\Common{
switch($mode) {
case 'r':
case 'rb':
+ if(!$this->file_exists($path)) {
+ return false;
+ }
//straight up curl instead of sabredav here, sabredav put's the entire get result in memory
$curl = curl_init();
$fp = fopen('php://temp', 'r+');
diff --git a/apps/files_external/tests/amazons3.php b/apps/files_external/tests/amazons3.php
index cf372aecbd7..9fb377af3ba 100644
--- a/apps/files_external/tests/amazons3.php
+++ b/apps/files_external/tests/amazons3.php
@@ -1,45 +1,44 @@
<?php
/**
-* ownCloud
-*
-* @author Michael Gapczynski
-* @copyright 2012 Michael Gapczynski mtgap@owncloud.com
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either
-* version 3 of the License, or any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
-*
-* You should have received a copy of the GNU Affero General Public
-* License along with this library. If not, see <http://www.gnu.org/licenses/>.
-*/
+ * ownCloud
+ *
+ * @author Michael Gapczynski
+ * @copyright 2012 Michael Gapczynski mtgap@owncloud.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
namespace Test\Files\Storage;
-$config = include('apps/files_external/tests/config.php');
-if (!is_array($config) or !isset($config['amazons3']) or !$config['amazons3']['run']) {
- abstract class AmazonS3 extends Storage{}
- return;
-} else {
- class AmazonS3 extends Storage {
+class AmazonS3 extends Storage {
- private $config;
- private $id;
+ private $config;
+ private $id;
- public function setUp() {
- $id = uniqid();
- $this->config = include('apps/files_external/tests/config.php');
- $this->config['amazons3']['bucket'] = $id; // Make sure we have a new empty bucket to work in
- $this->instance = new \OC\Files\Storage\AmazonS3($this->config['amazons3']);
+ public function setUp() {
+ $id = uniqid();
+ $this->config = include('files_external/tests/config.php');
+ if (!is_array($this->config) or !isset($this->config['amazons3']) or !$this->config['amazons3']['run']) {
+ $this->markTestSkipped('AmazonS3 backend not configured');
}
+ $this->config['amazons3']['bucket'] = $id; // Make sure we have a new empty bucket to work in
+ $this->instance = new \OC\Files\Storage\AmazonS3($this->config['amazons3']);
+ }
- public function tearDown() {
+ public function tearDown() {
+ if ($this->instance) {
$s3 = new \AmazonS3(array('key' => $this->config['amazons3']['key'], 'secret' => $this->config['amazons3']['secret']));
if ($s3->delete_all_objects($this->id)) {
$s3->delete_bucket($this->id);
diff --git a/apps/files_external/tests/config.php b/apps/files_external/tests/config.php
index 7779f618948..ff16b1c1d8a 100644
--- a/apps/files_external/tests/config.php
+++ b/apps/files_external/tests/config.php
@@ -26,7 +26,7 @@ return array(
'run'=>false,
'user'=>'test:tester',
'token'=>'testing',
- 'host'=>'localhost:8080/auth',
+ 'host'=>'localhost.local:8080/auth',
'root'=>'/',
),
'smb'=>array(
diff --git a/apps/files_external/tests/dropbox.php b/apps/files_external/tests/dropbox.php
index e77e0767c91..c517ef4cbb7 100644
--- a/apps/files_external/tests/dropbox.php
+++ b/apps/files_external/tests/dropbox.php
@@ -8,22 +8,21 @@
namespace Test\Files\Storage;
-$config=include('files_external/tests/config.php');
-if(!is_array($config) or !isset($config['dropbox']) or !$config['dropbox']['run']) {
- abstract class Dropbox extends Storage{}
- return;
-}else{
- class Dropbox extends Storage {
- private $config;
+class Dropbox extends Storage {
+ private $config;
- public function setUp() {
- $id=uniqid();
- $this->config=include('files_external/tests/config.php');
- $this->config['dropbox']['root'].='/'.$id;//make sure we have an new empty folder to work in
- $this->instance=new \OC\Files\Storage\Dropbox($this->config['dropbox']);
+ public function setUp() {
+ $id = uniqid();
+ $this->config = include('files_external/tests/config.php');
+ if (!is_array($this->config) or !isset($this->config['dropbox']) or !$this->config['dropbox']['run']) {
+ $this->markTestSkipped('Dropbox backend not configured');
}
+ $this->config['dropbox']['root'] .= '/' . $id; //make sure we have an new empty folder to work in
+ $this->instance = new \OC\Files\Storage\Dropbox($this->config['dropbox']);
+ }
- public function tearDown() {
+ public function tearDown() {
+ if ($this->instance) {
$this->instance->unlink('/');
}
}
diff --git a/apps/files_external/tests/ftp.php b/apps/files_external/tests/ftp.php
index 8a0821e25a5..3e6208e4a0d 100644
--- a/apps/files_external/tests/ftp.php
+++ b/apps/files_external/tests/ftp.php
@@ -8,22 +8,21 @@
namespace Test\Files\Storage;
-$config=include('apps/files_external/tests/config.php');
-if(!is_array($config) or !isset($config['ftp']) or !$config['ftp']['run']) {
- abstract class FTP extends Storage{}
- return;
-}else{
- class FTP extends Storage {
- private $config;
+class FTP extends Storage {
+ private $config;
- public function setUp() {
- $id=uniqid();
- $this->config=include('apps/files_external/tests/config.php');
- $this->config['ftp']['root'].='/'.$id;//make sure we have an new empty folder to work in
- $this->instance=new \OC\Files\Storage\FTP($this->config['ftp']);
+ public function setUp() {
+ $id = uniqid();
+ $this->config = include('files_external/tests/config.php');
+ if (!is_array($this->config) or !isset($this->config['ftp']) or !$this->config['ftp']['run']) {
+ $this->markTestSkipped('FTP backend not configured');
}
+ $this->config['ftp']['root'] .= '/' . $id; //make sure we have an new empty folder to work in
+ $this->instance = new \OC\Files\Storage\FTP($this->config['ftp']);
+ }
- public function tearDown() {
+ public function tearDown() {
+ if ($this->instance) {
\OCP\Files::rmdirr($this->instance->constructUrl(''));
}
}
diff --git a/apps/files_external/tests/google.php b/apps/files_external/tests/google.php
index fff6461c912..87b3ae4e4cc 100644
--- a/apps/files_external/tests/google.php
+++ b/apps/files_external/tests/google.php
@@ -1,44 +1,42 @@
<?php
/**
-* ownCloud
-*
-* @author Michael Gapczynski
-* @copyright 2012 Michael Gapczynski mtgap@owncloud.com
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either
-* version 3 of the License, or any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
-*
-* You should have received a copy of the GNU Affero General Public
-* License along with this library. If not, see <http://www.gnu.org/licenses/>.
-*/
+ * ownCloud
+ *
+ * @author Michael Gapczynski
+ * @copyright 2012 Michael Gapczynski mtgap@owncloud.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
namespace Test\Files\Storage;
-$config=include('apps/files_external/tests/config.php');
-if(!is_array($config) or !isset($config['google']) or !$config['google']['run']) {
- abstract class Google extends Storage{}
- return;
-}else{
- class Google extends Storage {
+class Google extends Storage {
+ private $config;
- private $config;
-
- public function setUp() {
- $id=uniqid();
- $this->config=include('apps/files_external/tests/config.php');
- $this->config['google']['root'].='/'.$id;//make sure we have an new empty folder to work in
- $this->instance=new \OC\Files\Storage\Google($this->config['google']);
+ public function setUp() {
+ $id = uniqid();
+ $this->config = include('files_external/tests/config.php');
+ if (!is_array($this->config) or !isset($this->config['google']) or !$this->config['google']['run']) {
+ $this->markTestSkipped('Google backend not configured');
}
+ $this->config['google']['root'] .= '/' . $id; //make sure we have an new empty folder to work in
+ $this->instance = new \OC\Files\Storage\Google($this->config['google']);
+ }
- public function tearDown() {
+ public function tearDown() {
+ if ($this->instance) {
$this->instance->rmdir('/');
}
}
diff --git a/apps/files_external/tests/smb.php b/apps/files_external/tests/smb.php
index 24728dc2370..b4ac6db1187 100644
--- a/apps/files_external/tests/smb.php
+++ b/apps/files_external/tests/smb.php
@@ -8,24 +8,22 @@
namespace Test\Files\Storage;
-$config=include('apps/files_external/tests/config.php');
+class SMB extends Storage {
+ private $config;
-if(!is_array($config) or !isset($config['smb']) or !$config['smb']['run']) {
- abstract class SMB extends Storage{}
- return;
-}else{
- class SMB extends Storage {
- private $config;
-
- public function setUp() {
- $id=uniqid();
- $this->config=include('apps/files_external/tests/config.php');
- $this->config['smb']['root'].=$id;//make sure we have an new empty folder to work in
- $this->instance=new \OC\Files\Storage\SMB($this->config['smb']);
+ public function setUp() {
+ $id = uniqid();
+ $this->config = include('files_external/tests/config.php');
+ if (!is_array($this->config) or !isset($this->config['smb']) or !$this->config['smb']['run']) {
+ $this->markTestSkipped('Samba backend not configured');
}
+ $this->config['smb']['root'] .= $id; //make sure we have an new empty folder to work in
+ $this->instance = new \OC\Files\Storage\SMB($this->config['smb']);
+ }
- public function tearDown() {
+ public function tearDown() {
+ if ($this->instance) {
\OCP\Files::rmdirr($this->instance->constructUrl(''));
}
}
diff --git a/apps/files_external/tests/swift.php b/apps/files_external/tests/swift.php
index 98a97f99b5b..4899d44acad 100644
--- a/apps/files_external/tests/swift.php
+++ b/apps/files_external/tests/swift.php
@@ -8,25 +8,23 @@
namespace Test\Files\Storage;
-$config=include('apps/files_external/tests/config.php');
-if(!is_array($config) or !isset($config['swift']) or !$config['swift']['run']) {
- abstract class SWIFT extends Storage{}
- return;
-}else{
- class SWIFT extends Storage {
- private $config;
+class SWIFT extends Storage {
+ private $config;
- public function setUp() {
- $id=uniqid();
- $this->config=include('apps/files_external/tests/config.php');
- $this->config['swift']['root'].='/'.$id;//make sure we have an new empty folder to work in
- $this->instance=new \OC\Files\Storage\SWIFT($this->config['swift']);
+ public function setUp() {
+ $id = uniqid();
+ $this->config = include('files_external/tests/config.php');
+ if (!is_array($this->config) or !isset($this->config['swift']) or !$this->config['swift']['run']) {
+ $this->markTestSkipped('OpenStack SWIFT backend not configured');
}
+ $this->config['swift']['root'] .= '/' . $id; //make sure we have an new empty folder to work in
+ $this->instance = new \OC\Files\Storage\SWIFT($this->config['swift']);
+ }
- public function tearDown() {
- $this->instance->rmdir('');
+ public function tearDown() {
+ if ($this->instance) {
+ $this->instance->rmdir('');
}
-
}
}
diff --git a/apps/files_external/tests/webdav.php b/apps/files_external/tests/webdav.php
index cddd0d513ed..13e3be42948 100644
--- a/apps/files_external/tests/webdav.php
+++ b/apps/files_external/tests/webdav.php
@@ -8,22 +8,22 @@
namespace Test\Files\Storage;
-$config=include('apps/files_external/tests/config.php');
-if(!is_array($config) or !isset($config['webdav']) or !$config['webdav']['run']) {
- abstract class DAV extends Storage{}
- return;
-}else{
- class DAV extends Storage {
- private $config;
+class DAV extends Storage {
- public function setUp() {
- $id=uniqid();
- $this->config=include('apps/files_external/tests/config.php');
- $this->config['webdav']['root'].='/'.$id;//make sure we have an new empty folder to work in
- $this->instance=new \OC\Files\Storage\DAV($this->config['webdav']);
+ private $config;
+
+ public function setUp() {
+ $id = uniqid();
+ $this->config = include('files_external/tests/config.php');
+ if (!is_array($this->config) or !isset($this->config['webdav']) or !$this->config['webdav']['run']) {
+ $this->markTestSkipped('WebDAV backend not configured');
}
+ $this->config['webdav']['root'] .= '/' . $id; //make sure we have an new empty folder to work in
+ $this->instance = new \OC\Files\Storage\DAV($this->config['webdav']);
+ }
- public function tearDown() {
+ public function tearDown() {
+ if ($this->instance) {
$this->instance->rmdir('/');
}
}