diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2016-05-18 15:28:50 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2016-05-18 15:28:50 +0200 |
commit | 8dc25321d3ca1725b970e86aa72e1f8106e05913 (patch) | |
tree | 58eec03fe5019762c285106d3ab59e8c27840f0d /apps/federatedfilesharing/lib | |
parent | 765782445a24fb1b239f2a3cd5c7b239ae4f6455 (diff) | |
download | nextcloud-server-8dc25321d3ca1725b970e86aa72e1f8106e05913.tar.gz nextcloud-server-8dc25321d3ca1725b970e86aa72e1f8106e05913.zip |
Move FederatedFileSharing to PSR-4
Diffstat (limited to 'apps/federatedfilesharing/lib')
-rw-r--r-- | apps/federatedfilesharing/lib/AddressHandler.php (renamed from apps/federatedfilesharing/lib/addresshandler.php) | 0 | ||||
-rw-r--r-- | apps/federatedfilesharing/lib/AppInfo/Application.php | 88 | ||||
-rw-r--r-- | apps/federatedfilesharing/lib/BackgroundJob/UnShare.php | 142 | ||||
-rw-r--r-- | apps/federatedfilesharing/lib/DiscoveryManager.php (renamed from apps/federatedfilesharing/lib/discoverymanager.php) | 0 | ||||
-rw-r--r-- | apps/federatedfilesharing/lib/FederatedShareProvider.php (renamed from apps/federatedfilesharing/lib/federatedshareprovider.php) | 0 | ||||
-rw-r--r-- | apps/federatedfilesharing/lib/Notifications.php (renamed from apps/federatedfilesharing/lib/notifications.php) | 0 | ||||
-rw-r--r-- | apps/federatedfilesharing/lib/TokenHandler.php (renamed from apps/federatedfilesharing/lib/tokenhandler.php) | 0 |
7 files changed, 230 insertions, 0 deletions
diff --git a/apps/federatedfilesharing/lib/addresshandler.php b/apps/federatedfilesharing/lib/AddressHandler.php index 92768f11b95..92768f11b95 100644 --- a/apps/federatedfilesharing/lib/addresshandler.php +++ b/apps/federatedfilesharing/lib/AddressHandler.php diff --git a/apps/federatedfilesharing/lib/AppInfo/Application.php b/apps/federatedfilesharing/lib/AppInfo/Application.php new file mode 100644 index 00000000000..5a213aec8e2 --- /dev/null +++ b/apps/federatedfilesharing/lib/AppInfo/Application.php @@ -0,0 +1,88 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * 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, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\FederatedFileSharing\AppInfo; + + +use OCA\FederatedFileSharing\FederatedShareProvider; +use OCP\AppFramework\App; + +class Application extends App { + + /** @var FederatedShareProvider */ + protected $federatedShareProvider; + + /** + * register personal and admin settings page + */ + public function registerSettings() { + \OCP\App::registerAdmin('federatedfilesharing', 'settings-admin'); + \OCP\App::registerPersonal('federatedfilesharing', 'settings-personal'); + } + + /** + * get instance of federated share provider + * + * @return FederatedShareProvider + */ + public function getFederatedShareProvider() { + if ($this->federatedShareProvider === null) { + $this->initFederatedShareProvider(); + } + return $this->federatedShareProvider; + } + + /** + * initialize federated share provider + */ + protected function initFederatedShareProvider() { + $addressHandler = new \OCA\FederatedFileSharing\AddressHandler( + \OC::$server->getURLGenerator(), + \OC::$server->getL10N('federatedfilesharing') + ); + $discoveryManager = new \OCA\FederatedFileSharing\DiscoveryManager( + \OC::$server->getMemCacheFactory(), + \OC::$server->getHTTPClientService() + ); + $notifications = new \OCA\FederatedFileSharing\Notifications( + $addressHandler, + \OC::$server->getHTTPClientService(), + $discoveryManager, + \OC::$server->getJobList() + ); + $tokenHandler = new \OCA\FederatedFileSharing\TokenHandler( + \OC::$server->getSecureRandom() + ); + + $this->federatedShareProvider = new \OCA\FederatedFileSharing\FederatedShareProvider( + \OC::$server->getDatabaseConnection(), + $addressHandler, + $notifications, + $tokenHandler, + \OC::$server->getL10N('federatedfilesharing'), + \OC::$server->getLogger(), + \OC::$server->getLazyRootFolder(), + \OC::$server->getConfig() + ); + } + +} diff --git a/apps/federatedfilesharing/lib/BackgroundJob/UnShare.php b/apps/federatedfilesharing/lib/BackgroundJob/UnShare.php new file mode 100644 index 00000000000..b056db4eac7 --- /dev/null +++ b/apps/federatedfilesharing/lib/BackgroundJob/UnShare.php @@ -0,0 +1,142 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * 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, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\FederatedFileSharing\BackgroundJob; + + +use OC\BackgroundJob\Job; +use OC\BackgroundJob\JobList; +use OCA\FederatedFileSharing\AddressHandler; +use OCA\FederatedFileSharing\DiscoveryManager; +use OCA\FederatedFileSharing\Notifications; +use OCP\BackgroundJob\IJobList; +use OCP\ILogger; + +/** + * Class UnShare + * + * Background job to re-send the un-share notification to the remote server in + * case the server was not available on the first try + * + * @package OCA\FederatedFileSharing\BackgroundJob + */ +class UnShare extends Job { + + /** @var bool */ + private $retainJob = true; + + /** @var Notifications */ + private $notifications; + + /** @var int max number of attempts to send the un-share request */ + private $maxTry = 10; + + /** @var int how much time should be between two tries (12 hours) */ + private $interval = 43200; + + /** + * UnShare constructor. + * + * @param Notifications $notifications + */ + public function __construct(Notifications $notifications = null) { + if ($notifications) { + $this->notifications = $notifications; + } else { + $addressHandler = new AddressHandler( + \OC::$server->getURLGenerator(), + \OC::$server->getL10N('federatedfilesharing') + ); + $discoveryManager = new DiscoveryManager( + \OC::$server->getMemCacheFactory(), + \OC::$server->getHTTPClientService() + ); + $this->notifications = new Notifications( + $addressHandler, + \OC::$server->getHTTPClientService(), + $discoveryManager, + \OC::$server->getJobList() + ); + } + + } + + /** + * run the job, then remove it from the jobList + * + * @param JobList $jobList + * @param ILogger $logger + */ + public function execute($jobList, ILogger $logger = null) { + + if ($this->shouldRun($this->argument)) { + parent::execute($jobList, $logger); + $jobList->remove($this, $this->argument); + if ($this->retainJob) { + $this->reAddJob($jobList, $this->argument); + } + } + } + + protected function run($argument) { + $remote = $argument['remote']; + $id = (int)$argument['id']; + $token = $argument['token']; + $try = (int)$argument['try'] + 1; + + $result = $this->notifications->sendRemoteUnShare($remote, $id, $token, $try); + + if ($result === true || $try > $this->maxTry) { + $this->retainJob = false; + } + } + + /** + * re-add background job with new arguments + * + * @param IJobList $jobList + * @param array $argument + */ + protected function reAddJob(IJobList $jobList, array $argument) { + $jobList->add('OCA\FederatedFileSharing\BackgroundJob\UnShare', + [ + 'remote' => $argument['remote'], + 'id' => $argument['id'], + 'token' => $argument['token'], + 'try' => (int)$argument['try'] + 1, + 'lastRun' => time() + ] + ); + } + + /** + * test if it is time for the next run + * + * @param array $argument + * @return bool + */ + protected function shouldRun(array $argument) { + $lastRun = (int)$argument['lastRun']; + return ((time() - $lastRun) > $this->interval); + } + +} diff --git a/apps/federatedfilesharing/lib/discoverymanager.php b/apps/federatedfilesharing/lib/DiscoveryManager.php index 51ea71195fa..51ea71195fa 100644 --- a/apps/federatedfilesharing/lib/discoverymanager.php +++ b/apps/federatedfilesharing/lib/DiscoveryManager.php diff --git a/apps/federatedfilesharing/lib/federatedshareprovider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php index d014a6219a3..d014a6219a3 100644 --- a/apps/federatedfilesharing/lib/federatedshareprovider.php +++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php diff --git a/apps/federatedfilesharing/lib/notifications.php b/apps/federatedfilesharing/lib/Notifications.php index 9cdc7760361..9cdc7760361 100644 --- a/apps/federatedfilesharing/lib/notifications.php +++ b/apps/federatedfilesharing/lib/Notifications.php diff --git a/apps/federatedfilesharing/lib/tokenhandler.php b/apps/federatedfilesharing/lib/TokenHandler.php index ec5f73127d6..ec5f73127d6 100644 --- a/apps/federatedfilesharing/lib/tokenhandler.php +++ b/apps/federatedfilesharing/lib/TokenHandler.php |