use OC\Files\NotPermittedException;
-class File extends Node {
+class File extends Node implements \OCP\Files\Node\File {
/**
* @return string
* @throws \OC\Files\NotPermittedException
use OC\Files\NotFoundException;
use OC\Files\NotPermittedException;
-class Folder extends Node {
+class Folder extends Node implements \OCP\Files\Node\Folder {
/**
* @param string $path path relative to the folder
* @return string
require_once 'files/exceptions.php';
-class Node {
+class Node implements \OCP\Files\Node\Node {
/**
* @var \OC\Files\View $view
*/
--- /dev/null
+<?php
+/**
+ * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCP\Files\Node;
+
+use OC\Files\NotPermittedException;
+
+interface File extends Node {
+ /**
+ * @return string
+ * @throws \OC\Files\NotPermittedException
+ */
+ public function getContent();
+
+ /**
+ * @param string $data
+ * @throws \OC\Files\NotPermittedException
+ */
+ public function putContent($data);
+
+ /**
+ * @return string
+ */
+ public function getMimeType();
+
+ /**
+ * @param string $mode
+ * @return resource
+ * @throws \OC\Files\NotPermittedException
+ */
+ public function fopen($mode);
+
+ /**
+ * @param string $type
+ * @param bool $raw
+ * @return string
+ */
+ public function hash($type, $raw = false);
+}
--- /dev/null
+<?php
+/**
+ * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCP\Files\Node;
+
+use OC\Files\Cache\Cache;
+use OC\Files\Cache\Scanner;
+use OC\Files\NotFoundException;
+use OC\Files\NotPermittedException;
+
+interface Folder extends Node {
+ /**
+ * @param string $path path relative to the folder
+ * @return string
+ * @throws \OC\Files\NotPermittedException
+ */
+ public function getFullPath($path);
+
+ /**
+ * @param string $path
+ * @throws \OC\Files\NotFoundException
+ * @return string
+ */
+ public function getRelativePath($path);
+
+ /**
+ * check if a node is a (grand-)child of the folder
+ *
+ * @param \OC\Files\Node\Node $node
+ * @return bool
+ */
+ public function isSubNode($node);
+
+ /**
+ * get the content of this directory
+ *
+ * @throws \OC\Files\NotFoundException
+ * @return Node[]
+ */
+ public function getDirectoryListing();
+
+ /**
+ * Get the node at $path
+ *
+ * @param string $path
+ * @return \OC\Files\Node\Node
+ * @throws \OC\Files\NotFoundException
+ */
+ public function get($path);
+
+ /**
+ * @param string $path
+ * @return bool
+ */
+ public function nodeExists($path);
+
+ /**
+ * @param string $path
+ * @return Folder
+ * @throws NotPermittedException
+ */
+ public function newFolder($path);
+
+ /**
+ * @param string $path
+ * @return File
+ * @throws NotPermittedException
+ */
+ public function newFile($path);
+
+ /**
+ * search for files with the name matching $query
+ *
+ * @param string $query
+ * @return Node[]
+ */
+ public function search($query);
+
+ /**
+ * search for files by mimetype
+ *
+ * @param string $mimetype
+ * @return Node[]
+ */
+ public function searchByMime($mimetype);
+
+ /**
+ * @param $id
+ * @return Node[]
+ */
+ public function getById($id);
+
+ public function getFreeSpace();
+
+ /**
+ * @return bool
+ */
+ public function isCreatable();
+}
--- /dev/null
+<?php
+/**
+ * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCP\Files\Node;
+
+interface Node {
+ /**
+ * @param string $targetPath
+ * @throws \OC\Files\NotPermittedException
+ * @return \OC\Files\Node\Node
+ */
+ public function move($targetPath);
+
+ public function delete();
+
+ /**
+ * @param string $targetPath
+ * @return \OC\Files\Node\Node
+ */
+ public function copy($targetPath);
+
+ /**
+ * @param int $mtime
+ * @throws \OC\Files\NotPermittedException
+ */
+ public function touch($mtime = null);
+
+ /**
+ * @return \OC\Files\Storage\Storage
+ * @throws \OC\Files\NotFoundException
+ */
+ public function getStorage();
+
+ /**
+ * @return string
+ */
+ public function getPath();
+
+ /**
+ * @return string
+ */
+ public function getInternalPath();
+
+ /**
+ * @return int
+ */
+ public function getId();
+
+ /**
+ * @return array
+ */
+ public function stat();
+
+ /**
+ * @return int
+ */
+ public function getMTime();
+
+ /**
+ * @return int
+ */
+ public function getSize();
+
+ /**
+ * @return string
+ */
+ public function getEtag();
+
+ /**
+ * @return int
+ */
+ public function getPermissions();
+
+ /**
+ * @return bool
+ */
+ public function isReadable();
+
+ /**
+ * @return bool
+ */
+ public function isUpdateable();
+
+ /**
+ * @return bool
+ */
+ public function isDeletable();
+
+ /**
+ * @return bool
+ */
+ public function isShareable();
+
+ /**
+ * @return Node
+ */
+ public function getParent();
+
+ /**
+ * @return string
+ */
+ public function getName();
+}