Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2017-10-04 17:21:50 +0300
committerMorris Jobke <hey@morrisjobke.de>2017-12-08 18:37:14 +0300
commit5133a31d3c713e3e3c562e6fcd131ed2738d8798 (patch)
tree7bb2499876e7a75caa8e4921de46d528b97ee062 /lib/public/Remote
parent74b5ce8fd4311f0d6f6a59e0636d343807b79d74 (diff)
Add public api for remote api
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib/public/Remote')
-rw-r--r--lib/public/Remote/Api/IApiCollection.php43
-rw-r--r--lib/public/Remote/Api/IApiFactory.php39
-rw-r--r--lib/public/Remote/Api/ICapabilitiesApi.php34
-rw-r--r--lib/public/Remote/Api/IUserApi.php37
-rw-r--r--lib/public/Remote/ICredentials.php43
-rw-r--r--lib/public/Remote/IInstance.php66
-rw-r--r--lib/public/Remote/IInstanceFactory.php35
-rw-r--r--lib/public/Remote/IUser.php120
8 files changed, 417 insertions, 0 deletions
diff --git a/lib/public/Remote/Api/IApiCollection.php b/lib/public/Remote/Api/IApiCollection.php
new file mode 100644
index 00000000000..c2bb11114d1
--- /dev/null
+++ b/lib/public/Remote/Api/IApiCollection.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @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\Remote\Api;
+
+/**
+ * Provides access to the various apis of a remote instance
+ *
+ * @since 13.0.0
+ */
+interface IApiCollection {
+ /**
+ * @return IUserApi
+ *
+ * @since 13.0.0
+ */
+ public function getUserApi();
+
+ /**
+ * @return ICapabilitiesApi
+ *
+ * @since 13.0.0
+ */
+ public function getCapabilitiesApi();
+}
diff --git a/lib/public/Remote/Api/IApiFactory.php b/lib/public/Remote/Api/IApiFactory.php
new file mode 100644
index 00000000000..f1830f4c04a
--- /dev/null
+++ b/lib/public/Remote/Api/IApiFactory.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @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\Remote\Api;
+
+use OCP\Remote\ICredentials;
+use OCP\Remote\IInstance;
+
+/**
+ * @since 13.0.0
+ */
+interface IApiFactory {
+ /**
+ * @param IInstance $instance
+ * @param ICredentials $credentials
+ * @return IApiCollection
+ *
+ * @since 13.0.0
+ */
+ public function getApiCollection(IInstance $instance, ICredentials $credentials);
+}
diff --git a/lib/public/Remote/Api/ICapabilitiesApi.php b/lib/public/Remote/Api/ICapabilitiesApi.php
new file mode 100644
index 00000000000..855be7b520b
--- /dev/null
+++ b/lib/public/Remote/Api/ICapabilitiesApi.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @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\Remote\Api;
+
+/**
+ * @since 13.0.0
+ */
+interface ICapabilitiesApi {
+ /**
+ * @return array The capabilities in the form of [$appId => [$capability => $value]]
+ *
+ * @since 13.0.0
+ */
+ public function getCapabilities();
+}
diff --git a/lib/public/Remote/Api/IUserApi.php b/lib/public/Remote/Api/IUserApi.php
new file mode 100644
index 00000000000..9fa05dee01a
--- /dev/null
+++ b/lib/public/Remote/Api/IUserApi.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @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\Remote\Api;
+
+use OCP\Remote\IUser;
+
+/**
+ * @since 13.0.0
+ */
+interface IUserApi {
+ /**
+ * @param string $userId
+ * @return IUser
+ *
+ * @since 13.0.0
+ */
+ public function getUser($userId);
+}
diff --git a/lib/public/Remote/ICredentials.php b/lib/public/Remote/ICredentials.php
new file mode 100644
index 00000000000..587bb4d5930
--- /dev/null
+++ b/lib/public/Remote/ICredentials.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @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\Remote;
+
+/**
+ * The credentials for a remote user
+ *
+ * @since 13.0.0
+ */
+interface ICredentials {
+ /**
+ * @return string
+ *
+ * @since 13.0.0
+ */
+ public function getUsername();
+
+ /**
+ * @return string
+ *
+ * @since 13.0.0
+ */
+ public function getPassword();
+}
diff --git a/lib/public/Remote/IInstance.php b/lib/public/Remote/IInstance.php
new file mode 100644
index 00000000000..08973308aba
--- /dev/null
+++ b/lib/public/Remote/IInstance.php
@@ -0,0 +1,66 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @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\Remote;
+
+/**
+ * Provides some basic info about a remote Nextcloud instance
+ *
+ * @since 13.0.0
+ */
+interface IInstance {
+ /**
+ * @return string The url of the remote server without protocol
+ *
+ * @since 13.0.0
+ */
+ public function getUrl();
+
+ /**
+ * @return string The of of the remote server with protocol
+ *
+ * @since 13.0.0
+ */
+ public function getFullUrl();
+
+ /**
+ * @return string The full version string in '13.1.2.3' format
+ *
+ * @since 13.0.0
+ */
+ public function getVersion();
+
+ /**
+ * @return string 'http' or 'https'
+ *
+ * @since 13.0.0
+ */
+ public function getProtocol();
+
+ /**
+ * Check that the remote server is installed and not in maintenance mode
+ *
+ * @since 13.0.0
+ *
+ * @return bool
+ */
+ public function isActive();
+}
diff --git a/lib/public/Remote/IInstanceFactory.php b/lib/public/Remote/IInstanceFactory.php
new file mode 100644
index 00000000000..22ac85563f3
--- /dev/null
+++ b/lib/public/Remote/IInstanceFactory.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @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\Remote;
+
+/**
+ * @since 13.0.0
+ */
+interface IInstanceFactory {
+ /**
+ * @param $url
+ * @return IInstance
+ *
+ * @since 13.0.0
+ */
+ public function getInstance($url);
+}
diff --git a/lib/public/Remote/IUser.php b/lib/public/Remote/IUser.php
new file mode 100644
index 00000000000..c34531d3847
--- /dev/null
+++ b/lib/public/Remote/IUser.php
@@ -0,0 +1,120 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @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\Remote;
+
+/**
+ * User info for a remote user
+ *
+ * @since 13.0.0
+ */
+interface IUser {
+ /**
+ * @return string
+ *
+ * @since 13.0.0
+ */
+ public function getUserId();
+
+ /**
+ * @return string
+ *
+ * @since 13.0.0
+ */
+ public function getEmail();
+
+ /**
+ * @return string
+ *
+ * @since 13.0.0
+ */
+ public function getDisplayName();
+
+ /**
+ * @return string
+ *
+ * @since 13.0.0
+ */
+ public function getPhone();
+
+ /**
+ * @return string
+ *
+ * @since 13.0.0
+ */
+ public function getAddress();
+
+ /**
+ * @return string
+ *
+ * @since 13.0.0
+ */
+ public function getWebsite();
+
+ /**
+ * @return string
+ *
+ * @since 13.0.0
+ */
+ public function getTwitter();
+
+ /**
+ * @return string[]
+ *
+ * @since 13.0.0
+ */
+ public function getGroups();
+
+ /**
+ * @return string
+ *
+ * @since 13.0.0
+ */
+ public function getLanguage();
+
+ /**
+ * @return int
+ *
+ * @since 13.0.0
+ */
+ public function getUsedSpace();
+
+ /**
+ * @return int
+ *
+ * @since 13.0.0
+ */
+ public function getFreeSpace();
+
+ /**
+ * @return int
+ *
+ * @since 13.0.0
+ */
+ public function getTotalSpace();
+
+ /**
+ * @return int
+ *
+ * @since 13.0.0
+ */
+ public function getQuota();
+}