summaryrefslogtreecommitdiffstats
path: root/lib/public
diff options
context:
space:
mode:
authorblizzz <blizzz@arthur-schiwon.de>2017-10-04 15:43:44 +0200
committerGitHub <noreply@github.com>2017-10-04 15:43:44 +0200
commit2d62f97f1bf1e7848e23ff0417915c3ab9e03e9a (patch)
treef1a67d6f764999fa802aa7034711321af684ddb9 /lib/public
parent5412c239f2ca128760c8d12de3bcd01384ddfd3f (diff)
parenta579f8aa375bf02f9763892ce725713f08526a1a (diff)
downloadnextcloud-server-2d62f97f1bf1e7848e23ff0417915c3ab9e03e9a.tar.gz
nextcloud-server-2d62f97f1bf1e7848e23ff0417915c3ab9e03e9a.zip
Merge pull request #6328 from nextcloud/split-sharees-api-logic
Splits off the logic from sharees endpoint thus making it available from within Nc/via PHP.
Diffstat (limited to 'lib/public')
-rw-r--r--lib/public/Collaboration/Collaborators/ISearch.php50
-rw-r--r--lib/public/Collaboration/Collaborators/ISearchPlugin.php42
-rw-r--r--lib/public/Collaboration/Collaborators/ISearchResult.php73
-rw-r--r--lib/public/Collaboration/Collaborators/SearchResultType.php73
4 files changed, 238 insertions, 0 deletions
diff --git a/lib/public/Collaboration/Collaborators/ISearch.php b/lib/public/Collaboration/Collaborators/ISearch.php
new file mode 100644
index 00000000000..281893908ee
--- /dev/null
+++ b/lib/public/Collaboration/Collaborators/ISearch.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Collaboration\Collaborators;
+
+/**
+ * Interface ISearch
+ *
+ * @package OCP\Collaboration\Collaborators
+ * @since 13.0.0
+ */
+interface ISearch {
+ /**
+ * @param string $search
+ * @param array $shareTypes
+ * @param bool $lookup
+ * @param int $limit
+ * @param int $offset
+ * @return array with two elements, 1st ISearchResult as array, 2nd a bool indicating whether more result are available
+ * @since 13.0.0
+ */
+ public function search($search, array $shareTypes, $lookup, $limit, $offset);
+
+ /**
+ * @param array $pluginInfo with keys 'shareType' containing the name of a corresponding constant in \OCP\Share and
+ * 'class' with the class name of the plugin
+ * @since 13.0.0
+ */
+ public function registerPlugin(array $pluginInfo);
+}
diff --git a/lib/public/Collaboration/Collaborators/ISearchPlugin.php b/lib/public/Collaboration/Collaborators/ISearchPlugin.php
new file mode 100644
index 00000000000..bc6fa53799b
--- /dev/null
+++ b/lib/public/Collaboration/Collaborators/ISearchPlugin.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Collaboration\Collaborators;
+
+/**
+ * Interface ISearchPlugin
+ *
+ * @package OCP\Collaboration\Collaborators
+ * @since 13.0.0
+ */
+interface ISearchPlugin {
+ /**
+ * @param string $search
+ * @param int $limit
+ * @param int $offset
+ * @param ISearchResult $searchResult
+ * @return bool whether the plugin has more results
+ * @since 13.0.0
+ */
+ public function search($search, $limit, $offset, ISearchResult $searchResult);
+}
diff --git a/lib/public/Collaboration/Collaborators/ISearchResult.php b/lib/public/Collaboration/Collaborators/ISearchResult.php
new file mode 100644
index 00000000000..abea5df8598
--- /dev/null
+++ b/lib/public/Collaboration/Collaborators/ISearchResult.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Collaboration\Collaborators;
+
+/**
+ * Interface ISearchResult
+ *
+ * @package OCP\Collaboration\Collaborators
+ * @since 13.0.0
+ */
+interface ISearchResult {
+ /**
+ * @param SearchResultType $type
+ * @param array $matches
+ * @param array|null $exactMatches
+ * @since 13.0.0
+ */
+ public function addResultSet(SearchResultType $type, array $matches, array $exactMatches = null);
+
+ /**
+ * @param SearchResultType $type
+ * @param string $collaboratorId
+ * @return bool
+ * @since 13.0.0
+ */
+ public function hasResult(SearchResultType $type, $collaboratorId);
+
+ /**
+ * @param SearchResultType $type
+ * @since 13.0.0
+ */
+ public function unsetResult(SearchResultType $type);
+
+ /**
+ * @param SearchResultType $type
+ * @since 13.0.0
+ */
+ public function markExactIdMatch(SearchResultType $type);
+
+ /**
+ * @param SearchResultType $type
+ * @return bool
+ * @since 13.0.0
+ */
+ public function hasExactIdMatch(SearchResultType $type);
+
+ /**
+ * @return array
+ * @since 13.0.0
+ */
+ public function asArray();
+}
diff --git a/lib/public/Collaboration/Collaborators/SearchResultType.php b/lib/public/Collaboration/Collaborators/SearchResultType.php
new file mode 100644
index 00000000000..e4ad888d6e4
--- /dev/null
+++ b/lib/public/Collaboration/Collaborators/SearchResultType.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Collaboration\Collaborators;
+
+/**
+ * Class SearchResultType
+ *
+ * @package OCP\Collaboration\Collaborators
+ * @since 13.0.0
+ */
+class SearchResultType {
+ /** @var string */
+ protected $label;
+
+ /**
+ * SearchResultType constructor.
+ *
+ * @param string $label
+ * @since 13.0.0
+ */
+ public function __construct($label) {
+ $this->label = $this->getValidatedType($label);
+ }
+
+ /**
+ * @return string
+ * @since 13.0.0
+ */
+ public function getLabel() {
+ return $this->label;
+ }
+
+ /**
+ * @param $type
+ * @return string
+ * @throws \InvalidArgumentException
+ * @since 13.0.0
+ */
+ protected function getValidatedType($type) {
+ $type = trim(strval($type));
+
+ if($type === '') {
+ throw new \InvalidArgumentException('Type must not be empty');
+ }
+
+ if($type === 'exact') {
+ throw new \InvalidArgumentException('Provided type is a reserved word');
+ }
+
+ return $type;
+ }
+}