Merge pull request #13317 from owncloud/partfile-fileinfo

Return valid fileinfo objects for part files
This commit is contained in:
Thomas Müller 2015-01-14 22:39:19 +01:00
commit 337c43ce92
2 changed files with 45 additions and 0 deletions

View File

@ -906,6 +906,9 @@ class View {
if (!Filesystem::isValidPath($path)) {
return $data;
}
if (Cache\Scanner::isPartialFile($path)) {
return $this->getPartFileInfo($path);
}
$path = Filesystem::normalizePath($this->fakeRoot . '/' . $path);
$mount = Filesystem::getMountManager()->find($path);
@ -1318,4 +1321,32 @@ class View {
return $result;
}
/**
* Get a fileinfo object for files that are ignored in the cache (part files)
*
* @param string $path
* @return \OCP\Files\FileInfo
*/
private function getPartFileInfo($path) {
$mount = $this->getMount($path);
$storage = $mount->getStorage();
$internalPath = $mount->getInternalPath($this->getAbsolutePath($path));
return new FileInfo(
$this->getAbsolutePath($path),
$storage,
$internalPath,
[
'fileid' => null,
'mimetype' => $storage->getMimeType($internalPath),
'name' => basename($path),
'etag' => null,
'size' => $storage->filesize($internalPath),
'mtime' => $storage->filemtime($internalPath),
'encrypted' => false,
'permissions' => \OCP\Constants::PERMISSION_ALL
],
$mount
);
}
}

View File

@ -703,6 +703,20 @@ class View extends \Test\TestCase {
$this->assertEquals($expectedPath, $view->getAbsolutePath($relativePath));
}
public function testPartFileInfo() {
$storage = new Temporary(array());
$scanner = $storage->getScanner();
\OC\Files\Filesystem::mount($storage, array(), '/test/');
$storage->file_put_contents('test.part', 'foobar');
$scanner->scan('');
$view = new \OC\Files\View('/test');
$info = $view->getFileInfo('test.part');
$this->assertInstanceOf('\OCP\Files\FileInfo', $info);
$this->assertNull($info->getId());
$this->assertEquals(6, $info->getSize());
}
function absolutePathProvider() {
return array(
array('/files/', ''),