Completed
Push — master ( dccb89...31024b )
by Morris
12:39
created

Application   B

Complexity

Total Complexity 3

Size/Duplication

Total Lines 125
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 17

Importance

Changes 0
Metric Value
dl 0
loc 125
rs 7.8571
c 0
b 0
f 0
wmc 3
lcom 0
cbo 17

2 Methods

Rating   Name   Duplication   Size   Complexity  
B __construct() 0 115 2
A registerMountProviders() 0 7 1
1
<?php
2
/**
3
 * @copyright Copyright (c) 2016, ownCloud, Inc.
4
 *
5
 * @author Bjoern Schiessle <[email protected]>
6
 * @author Björn Schießle <[email protected]>
7
 * @author Joas Schilling <[email protected]>
8
 * @author Lukas Reschke <[email protected]>
9
 * @author Robin Appelman <[email protected]>
10
 * @author Roeland Jago Douma <[email protected]>
11
 *
12
 * @license AGPL-3.0
13
 *
14
 * This code is free software: you can redistribute it and/or modify
15
 * it under the terms of the GNU Affero General Public License, version 3,
16
 * as published by the Free Software Foundation.
17
 *
18
 * This program is distributed in the hope that it will be useful,
19
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
 * GNU Affero General Public License for more details.
22
 *
23
 * You should have received a copy of the GNU Affero General Public License, version 3,
24
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
25
 *
26
 */
27
28
namespace OCA\Files_Sharing\AppInfo;
29
30
use OCA\FederatedFileSharing\DiscoveryManager;
31
use OCA\Files_Sharing\Middleware\OCSShareAPIMiddleware;
32
use OCA\Files_Sharing\MountProvider;
33
use OCP\AppFramework\App;
34
use OC\AppFramework\Utility\SimpleContainer;
35
use OCA\Files_Sharing\Controller\ExternalSharesController;
36
use OCA\Files_Sharing\Controller\ShareController;
37
use OCA\Files_Sharing\Middleware\SharingCheckMiddleware;
38
use OCP\Defaults;
39
use OCP\Federation\ICloudIdManager;
40
use \OCP\IContainer;
41
use OCP\IServerContainer;
42
43
class Application extends App {
44
	public function __construct(array $urlParams = array()) {
45
		parent::__construct('files_sharing', $urlParams);
46
47
		$container = $this->getContainer();
48
		/** @var IServerContainer $server */
49
		$server = $container->getServer();
50
51
		/**
52
		 * Controllers
53
		 */
54
		$container->registerService('ShareController', function (SimpleContainer $c) use ($server) {
55
			$federatedSharingApp = new \OCA\FederatedFileSharing\AppInfo\Application();
56
			return new ShareController(
57
				$c->query('AppName'),
58
				$c->query('Request'),
59
				$server->getConfig(),
60
				$server->getURLGenerator(),
61
				$server->getUserManager(),
62
				$server->getLogger(),
63
				$server->getActivityManager(),
64
				$server->getShareManager(),
65
				$server->getSession(),
66
				$server->getPreviewManager(),
67
				$server->getRootFolder(),
68
				$federatedSharingApp->getFederatedShareProvider(),
69
				$server->getEventDispatcher(),
70
				$server->getL10N($c->query('AppName')),
71
				$server->query(Defaults::class)
72
			);
73
		});
74
		$container->registerService('ExternalSharesController', function (SimpleContainer $c) {
75
			return new ExternalSharesController(
76
				$c->query('AppName'),
77
				$c->query('Request'),
78
				$c->query('ExternalManager'),
79
				$c->query('HttpClientService')
80
			);
81
		});
82
83
		/**
84
		 * Core class wrappers
85
		 */
86
		$container->registerService('HttpClientService', function (SimpleContainer $c) use ($server) {
0 ignored issues
show
Unused Code introduced by
The parameter $c is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
87
			return $server->getHTTPClientService();
88
		});
89
		$container->registerService(ICloudIdManager::class, function (SimpleContainer $c) use ($server) {
0 ignored issues
show
Unused Code introduced by
The parameter $c is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
90
			return $server->getCloudIdManager();
91
		});
92
		$container->registerService('ExternalManager', function (SimpleContainer $c) use ($server) {
0 ignored issues
show
Unused Code introduced by
The parameter $c is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
93
			$user = $server->getUserSession()->getUser();
94
			$uid = $user ? $user->getUID() : null;
95
			return new \OCA\Files_Sharing\External\Manager(
96
				$server->getDatabaseConnection(),
97
				\OC\Files\Filesystem::getMountManager(),
98
				\OC\Files\Filesystem::getLoader(),
99
				$server->getHTTPClientService(),
100
				$server->getNotificationManager(),
101
				$server->query(\OCP\OCS\IDiscoveryService::class),
102
				$uid
103
			);
104
		});
105
		$container->registerAlias('OCA\Files_Sharing\External\Manager', 'ExternalManager');
106
107
		/**
108
		 * Middleware
109
		 */
110
		$container->registerService('SharingCheckMiddleware', function (SimpleContainer $c) use ($server) {
111
			return new SharingCheckMiddleware(
112
				$c->query('AppName'),
113
				$server->getConfig(),
114
				$server->getAppManager(),
115
				$c['ControllerMethodReflector'],
116
				$server->getShareManager(),
117
				$server->getRequest()
118
			);
119
		});
120
121
		$container->registerService('OCSShareAPIMiddleware', function (SimpleContainer $c) use ($server) {
122
			return new OCSShareAPIMiddleware(
123
				$server->getShareManager(),
124
				$server->getL10N($c->query('AppName'))
125
			);
126
		});
127
128
		// Execute middlewares
129
		$container->registerMiddleWare('SharingCheckMiddleware');
130
		$container->registerMiddleWare('OCSShareAPIMiddleware');
131
132
		$container->registerService('MountProvider', function (IContainer $c) {
133
			/** @var \OCP\IServerContainer $server */
134
			$server = $c->query('ServerContainer');
135
			return new MountProvider(
136
				$server->getConfig(),
137
				$server->getShareManager(),
138
				$server->getLogger()
139
			);
140
		});
141
142
		$container->registerService('ExternalMountProvider', function (IContainer $c) {
143
			/** @var \OCP\IServerContainer $server */
144
			$server = $c->query('ServerContainer');
145
			return new \OCA\Files_Sharing\External\MountProvider(
146
				$server->getDatabaseConnection(),
147
				function() use ($c) {
148
					return $c->query('ExternalManager');
149
				},
150
				$server->getCloudIdManager()
151
			);
152
		});
153
154
		/*
155
		 * Register capabilities
156
		 */
157
		$container->registerCapability('OCA\Files_Sharing\Capabilities');
158
	}
159
160
	public function registerMountProviders() {
161
		/** @var \OCP\IServerContainer $server */
162
		$server = $this->getContainer()->query('ServerContainer');
163
		$mountProviderCollection = $server->getMountProviderCollection();
164
		$mountProviderCollection->registerProvider($this->getContainer()->query('MountProvider'));
165
		$mountProviderCollection->registerProvider($this->getContainer()->query('ExternalMountProvider'));
166
	}
167
}
168