summaryrefslogtreecommitdiffstats
path: root/lib/public
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2017-12-11 15:28:39 +0100
committerGitHub <noreply@github.com>2017-12-11 15:28:39 +0100
commite8acf448eb9615dd9b1f523d3e033fab82991b31 (patch)
tree0245fc0e3963dbbb5baf05769b9fcf4e55bb1358 /lib/public
parente47137c7d4a57b20bc2ed337aaee4cf99ee94e08 (diff)
parent5ce69e7c426059474c1ac59a2086ac66f672e8b8 (diff)
downloadnextcloud-server-e8acf448eb9615dd9b1f523d3e033fab82991b31.tar.gz
nextcloud-server-e8acf448eb9615dd9b1f523d3e033fab82991b31.zip
Merge pull request #6651 from nextcloud/remote-cloud-client
Add api clients for talking to remote clouds
Diffstat (limited to 'lib/public')
-rw-r--r--lib/public/IServerContainer.php12
-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
9 files changed, 429 insertions, 0 deletions
diff --git a/lib/public/IServerContainer.php b/lib/public/IServerContainer.php
index 8c33a765d5e..851a3c7e2bb 100644
--- a/lib/public/IServerContainer.php
+++ b/lib/public/IServerContainer.php
@@ -541,4 +541,16 @@ interface IServerContainer extends IContainer {
* @since 12.0.0
*/
public function getCloudIdManager();
+
+ /**
+ * @return \OCP\Remote\Api\IApiFactory
+ * @since 13.0.0
+ */
+ public function getRemoteApiFactory();
+
+ /**
+ * @return \OCP\Remote\IInstanceFactory
+ * @since 13.0.0
+ */
+ public function getRemoteInstanceFactory();
}
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..6aae463a897
--- /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 string $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();
+}