diff options
author | Bjoern Schiessle <bjoern@schiessle.org> | 2018-04-18 16:05:11 +0200 |
---|---|---|
committer | Bjoern Schiessle <bjoern@schiessle.org> | 2018-07-02 11:29:27 +0200 |
commit | 5cfe20675dfa1f895af47b4a8c93cf479d53b200 (patch) | |
tree | 66e0631e2f8791168797a4a7957a420e4ac429cf /apps | |
parent | 22bb834c48ad31add1d4bebc17de98d6e7d5d226 (diff) | |
download | nextcloud-server-5cfe20675dfa1f895af47b4a8c93cf479d53b200.tar.gz nextcloud-server-5cfe20675dfa1f895af47b4a8c93cf479d53b200.zip |
start implementing federated sharing 2.0
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
Diffstat (limited to 'apps')
5 files changed, 102 insertions, 1 deletions
diff --git a/apps/federatedfilesharing/composer/composer/autoload_classmap.php b/apps/federatedfilesharing/composer/composer/autoload_classmap.php index 387ea8bee3a..c81b0cc87f0 100644 --- a/apps/federatedfilesharing/composer/composer/autoload_classmap.php +++ b/apps/federatedfilesharing/composer/composer/autoload_classmap.php @@ -14,6 +14,7 @@ return array( 'OCA\\FederatedFileSharing\\FederatedShareProvider' => $baseDir . '/../lib/FederatedShareProvider.php', 'OCA\\FederatedFileSharing\\Notifications' => $baseDir . '/../lib/Notifications.php', 'OCA\\FederatedFileSharing\\Notifier' => $baseDir . '/../lib/Notifier.php', + 'OCA\\FederatedFileSharing\\OCM\\CloudFederationProviderFiles' => $baseDir . '/../lib/ocm/CloudFederationProviderFiles.php', 'OCA\\FederatedFileSharing\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php', 'OCA\\FederatedFileSharing\\Settings\\Personal' => $baseDir . '/../lib/Settings/Personal.php', 'OCA\\FederatedFileSharing\\Settings\\PersonalSection' => $baseDir . '/../lib/Settings/PersonalSection.php', diff --git a/apps/federatedfilesharing/composer/composer/autoload_static.php b/apps/federatedfilesharing/composer/composer/autoload_static.php index 95b8775384c..ea98739fba8 100644 --- a/apps/federatedfilesharing/composer/composer/autoload_static.php +++ b/apps/federatedfilesharing/composer/composer/autoload_static.php @@ -29,6 +29,7 @@ class ComposerStaticInitFederatedFileSharing 'OCA\\FederatedFileSharing\\FederatedShareProvider' => __DIR__ . '/..' . '/../lib/FederatedShareProvider.php', 'OCA\\FederatedFileSharing\\Notifications' => __DIR__ . '/..' . '/../lib/Notifications.php', 'OCA\\FederatedFileSharing\\Notifier' => __DIR__ . '/..' . '/../lib/Notifier.php', + 'OCA\\FederatedFileSharing\\OCM\\CloudFederationProviderFiles' => __DIR__ . '/..' . '/../lib/ocm/CloudFederationProviderFiles.php', 'OCA\\FederatedFileSharing\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php', 'OCA\\FederatedFileSharing\\Settings\\Personal' => __DIR__ . '/..' . '/../lib/Settings/Personal.php', 'OCA\\FederatedFileSharing\\Settings\\PersonalSection' => __DIR__ . '/..' . '/../lib/Settings/PersonalSection.php', diff --git a/apps/federatedfilesharing/lib/AppInfo/Application.php b/apps/federatedfilesharing/lib/AppInfo/Application.php index 2c863de21c6..23f521a51c4 100644 --- a/apps/federatedfilesharing/lib/AppInfo/Application.php +++ b/apps/federatedfilesharing/lib/AppInfo/Application.php @@ -32,6 +32,7 @@ use OCA\FederatedFileSharing\AddressHandler; use OCA\FederatedFileSharing\Controller\RequestHandlerController; use OCA\FederatedFileSharing\FederatedShareProvider; use OCA\FederatedFileSharing\Notifications; +use OCA\FederatedFileSharing\OCM\CloudFederationProvider; use OCP\AppFramework\App; use OCP\GlobalScale\IConfig; @@ -46,6 +47,13 @@ class Application extends App { $container = $this->getContainer(); $server = $container->getServer(); + $cloudFederationManager = $server->getCloudFederationProviderManager(); + $cloudFederationManager->addCloudFederationProvider('file', + 'Federated Files Sharing', + function() use ($container) { + return new CloudFederationProvider('file'); + }); + $container->registerService('RequestHandlerController', function(SimpleContainer $c) use ($server) { $addressHandler = new AddressHandler( $server->getURLGenerator(), diff --git a/apps/federatedfilesharing/lib/FederatedShareProvider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php index ecc1e1710b8..d2962d9c595 100644 --- a/apps/federatedfilesharing/lib/FederatedShareProvider.php +++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php @@ -30,6 +30,7 @@ namespace OCA\FederatedFileSharing; use OC\Share20\Share; +use OCA\FederatedFileSharing\OCM\CloudFederationProvider; use OCP\Federation\ICloudIdManager; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\Files\Folder; @@ -91,6 +92,9 @@ class FederatedShareProvider implements IShareProvider { /** @var \OCP\GlobalScale\IConfig */ private $gsConfig; + /** @var CloudFederationProvider */ + private $cloudFederationProvider; + /** * DefaultShareProvider constructor. * @@ -105,6 +109,7 @@ class FederatedShareProvider implements IShareProvider { * @param IUserManager $userManager * @param ICloudIdManager $cloudIdManager * @param \OCP\GlobalScale\IConfig $globalScaleConfig + * @param CloudFederationProvider $cloudFederationProvider */ public function __construct( IDBConnection $connection, @@ -117,7 +122,8 @@ class FederatedShareProvider implements IShareProvider { IConfig $config, IUserManager $userManager, ICloudIdManager $cloudIdManager, - \OCP\GlobalScale\IConfig $globalScaleConfig + \OCP\GlobalScale\IConfig $globalScaleConfig, + CloudFederationProvider $cloudFederationProvider ) { $this->dbConnection = $connection; $this->addressHandler = $addressHandler; @@ -130,6 +136,8 @@ class FederatedShareProvider implements IShareProvider { $this->userManager = $userManager; $this->cloudIdManager = $cloudIdManager; $this->gsConfig = $globalScaleConfig; + $this->cloudFederationProvider = $cloudFederationProvider; + } /** diff --git a/apps/federatedfilesharing/lib/ocm/CloudFederationProvider.php b/apps/federatedfilesharing/lib/ocm/CloudFederationProvider.php new file mode 100644 index 00000000000..36b2d282b9e --- /dev/null +++ b/apps/federatedfilesharing/lib/ocm/CloudFederationProvider.php @@ -0,0 +1,83 @@ +<?php +/** + * @copyright Copyright (c) 2018 Bjoern Schiessle <bjoern@schiessle.org> + * + * @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 OCA\FederatedFileSharing\OCM; + +use OCP\Federation\ICloudFederationFactory; +use OCP\Federation\ICloudFederationProvider; +use OCP\Federation\ICloudFederationShare; + +class CloudFederationProvider implements ICloudFederationProvider { + + /** @var string */ + private $shareType; + + /** + * CloudFederationProvider constructor. + * + * @param string $shareType + */ + public function __construct($shareType) { + $this->shareType = $shareType; + } + + /** + * @return string + */ + public function getShareType() { + return $this->shareType; + } + + /** + * send new share to another server + * + * @since 14.0.0 + */ + public function sendShare() { + // TODO: Implement sendShare() method. + } + + /** + * share received from another server + * + * @param ICloudFederationShare $share + * @return string provider specific unique ID of the share + * + * @since 14.0.0 + */ + public function shareReceived(ICloudFederationShare $share) { + // TODO: Implement shareReceived() method. + } + + /** + * notification received from another server + * + * @param string $id unique ID of a already existing share + * @param array $notification provider specific notification + * + * @throws \OCP\Federation\Exceptions\ShareNotFoundException + * + * @since 14.0.0 + */ + public function notificationReceived($id, $notification) { + // TODO: Implement notificationReceived() method. + } +} |