Use backend/auth mechanism providers in files_external

This commit is contained in:
Robin McCorkell 2016-05-11 19:34:57 +01:00
parent af0930fe59
commit 711bc7469a
1 changed files with 22 additions and 16 deletions

View File

@ -30,20 +30,26 @@ use \OCP\AppFramework\App;
use OCP\AppFramework\IAppContainer; use OCP\AppFramework\IAppContainer;
use \OCP\IContainer; use \OCP\IContainer;
use \OCA\Files_External\Service\BackendService; use \OCA\Files_External\Service\BackendService;
use \OCA\Files_External\Lib\Config\IBackendProvider;
use \OCA\Files_External\Lib\Config\IAuthMechanismProvider;
/** /**
* @package OCA\Files_External\Appinfo * @package OCA\Files_External\Appinfo
*/ */
class Application extends App { class Application extends App implements IBackendProvider, IAuthMechanismProvider {
public function __construct(array $urlParams = array()) { public function __construct(array $urlParams = array()) {
parent::__construct('files_external', $urlParams); parent::__construct('files_external', $urlParams);
$this->getContainer()->registerService('OCP\Files\Config\IUserMountCache', function (IAppContainer $c) { $container = $this->getContainer();
$container->registerService('OCP\Files\Config\IUserMountCache', function (IAppContainer $c) {
return $c->getServer()->query('UserMountCache'); return $c->getServer()->query('UserMountCache');
}); });
$this->loadBackends(); $backendService = $container->query('OCA\\Files_External\\Service\\BackendService');
$this->loadAuthMechanisms(); $backendService->registerBackendProvider($this);
$backendService->registerAuthMechanismProvider($this);
// app developers: do NOT depend on this! it will disappear with oC 9.0! // app developers: do NOT depend on this! it will disappear with oC 9.0!
\OC::$server->getEventDispatcher()->dispatch( \OC::$server->getEventDispatcher()->dispatch(
@ -63,13 +69,12 @@ class Application extends App {
} }
/** /**
* Load storage backends provided by this app * @{inheritdoc}
*/ */
protected function loadBackends() { public function getBackends() {
$container = $this->getContainer(); $container = $this->getContainer();
$service = $container->query('OCA\\Files_External\\Service\\BackendService');
$service->registerBackends([ $backends = [
$container->query('OCA\Files_External\Lib\Backend\Local'), $container->query('OCA\Files_External\Lib\Backend\Local'),
$container->query('OCA\Files_External\Lib\Backend\FTP'), $container->query('OCA\Files_External\Lib\Backend\FTP'),
$container->query('OCA\Files_External\Lib\Backend\DAV'), $container->query('OCA\Files_External\Lib\Backend\DAV'),
@ -80,24 +85,25 @@ class Application extends App {
$container->query('OCA\Files_External\Lib\Backend\Google'), $container->query('OCA\Files_External\Lib\Backend\Google'),
$container->query('OCA\Files_External\Lib\Backend\Swift'), $container->query('OCA\Files_External\Lib\Backend\Swift'),
$container->query('OCA\Files_External\Lib\Backend\SFTP_Key'), $container->query('OCA\Files_External\Lib\Backend\SFTP_Key'),
]); ];
if (!\OC_Util::runningOnWindows()) { if (!\OC_Util::runningOnWindows()) {
$service->registerBackends([ $backends += [
$container->query('OCA\Files_External\Lib\Backend\SMB'), $container->query('OCA\Files_External\Lib\Backend\SMB'),
$container->query('OCA\Files_External\Lib\Backend\SMB_OC'), $container->query('OCA\Files_External\Lib\Backend\SMB_OC'),
]); ];
} }
return $backends;
} }
/** /**
* Load authentication mechanisms provided by this app * @{inheritdoc}
*/ */
protected function loadAuthMechanisms() { public function getAuthMechanisms() {
$container = $this->getContainer(); $container = $this->getContainer();
$service = $container->query('OCA\\Files_External\\Service\\BackendService');
$service->registerAuthMechanisms([ return [
// AuthMechanism::SCHEME_NULL mechanism // AuthMechanism::SCHEME_NULL mechanism
$container->query('OCA\Files_External\Lib\Auth\NullMechanism'), $container->query('OCA\Files_External\Lib\Auth\NullMechanism'),
@ -123,7 +129,7 @@ class Application extends App {
// Specialized mechanisms // Specialized mechanisms
$container->query('OCA\Files_External\Lib\Auth\AmazonS3\AccessKey'), $container->query('OCA\Files_External\Lib\Auth\AmazonS3\AccessKey'),
]); ];
} }
} }