parent
74b5ce8fd4
commit
5133a31d3c
@ -0,0 +1,48 @@ |
||||
<?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 OC\Remote\Api; |
||||
|
||||
|
||||
use OCP\Http\Client\IClientService; |
||||
use OCP\Remote\Api\IApiCollection; |
||||
use OCP\Remote\ICredentials; |
||||
use OCP\Remote\IInstance; |
||||
|
||||
class ApiCollection implements IApiCollection { |
||||
private $instance; |
||||
private $credentials; |
||||
private $clientService; |
||||
|
||||
public function __construct(IInstance $instance, ICredentials $credentials, IClientService $clientService) { |
||||
$this->instance = $instance; |
||||
$this->credentials = $credentials; |
||||
$this->clientService = $clientService; |
||||
} |
||||
|
||||
public function getCapabilitiesApi() { |
||||
return new OCS($this->instance, $this->credentials, $this->clientService); |
||||
} |
||||
|
||||
public function getUserApi() { |
||||
return new OCS($this->instance, $this->credentials, $this->clientService); |
||||
} |
||||
} |
@ -0,0 +1,40 @@ |
||||
<?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 OC\Remote\Api; |
||||
|
||||
|
||||
use OCP\Http\Client\IClientService; |
||||
use OCP\Remote\Api\IApiFactory; |
||||
use OCP\Remote\ICredentials; |
||||
use OCP\Remote\IInstance; |
||||
|
||||
class ApiFactory implements IApiFactory { |
||||
private $clientService; |
||||
|
||||
public function __construct(IClientService $clientService) { |
||||
$this->clientService = $clientService; |
||||
} |
||||
|
||||
public function getApiCollection(IInstance $instance, ICredentials $credentials) { |
||||
return new ApiCollection($instance, $credentials, $this->clientService); |
||||
} |
||||
} |
@ -0,0 +1,41 @@ |
||||
<?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 OC\Remote; |
||||
|
||||
|
||||
use OCP\Http\Client\IClientService; |
||||
use OCP\ICache; |
||||
use OCP\Remote\IInstanceFactory; |
||||
|
||||
class InstanceFactory implements IInstanceFactory { |
||||
private $cache; |
||||
private $clientService; |
||||
|
||||
public function __construct(ICache $cache, IClientService $clientService) { |
||||
$this->cache = $cache; |
||||
$this->clientService = $clientService; |
||||
} |
||||
|
||||
public function getInstance($url) { |
||||
return new Instance($url, $this->cache, $this->clientService); |
||||
} |
||||
} |
@ -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(); |
||||
} |
@ -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); |
||||
} |
@ -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(); |
||||
} |
@ -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); |
||||
} |
@ -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(); |
||||
} |
@ -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(); |
||||
} |
@ -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); |
||||
} |
@ -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(); |
||||
} |
Loading…
Reference in new issue