Passed
Push — master ( 5aacb4...da571c )
by Christoph
11:08 queued 10s
created

Application::__construct()   B

Complexity

Conditions 2
Paths 1

Size

Total Lines 70
Code Lines 56

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 56
c 1
b 0
f 0
dl 0
loc 70
rs 8.9599
cc 2
nc 1
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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 Morris Jobke <[email protected]>
8
 * @author Robin Appelman <[email protected]>
9
 * @author Roeland Jago Douma <[email protected]>
10
 *
11
 * @license AGPL-3.0
12
 *
13
 * This code is free software: you can redistribute it and/or modify
14
 * it under the terms of the GNU Affero General Public License, version 3,
15
 * as published by the Free Software Foundation.
16
 *
17
 * This program is distributed in the hope that it will be useful,
18
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
 * GNU Affero General Public License for more details.
21
 *
22
 * You should have received a copy of the GNU Affero General Public License, version 3,
23
 * along with this program. If not, see <http://www.gnu.org/licenses/>
24
 *
25
 */
26
27
namespace OCA\FederatedFileSharing\AppInfo;
28
29
30
use OC\AppFramework\Utility\SimpleContainer;
31
use OCA\FederatedFileSharing\AddressHandler;
32
use OCA\FederatedFileSharing\Controller\RequestHandlerController;
33
use OCA\FederatedFileSharing\FederatedShareProvider;
34
use OCA\FederatedFileSharing\Notifications;
35
use OCA\FederatedFileSharing\Notifier;
36
use OCA\FederatedFileSharing\OCM\CloudFederationProviderFiles;
37
use OCP\AppFramework\App;
38
use OCP\GlobalScale\IConfig;
39
40
class Application extends App {
41
42
	/** @var FederatedShareProvider */
43
	protected $federatedShareProvider;
44
45
	public function __construct() {
46
		parent::__construct('federatedfilesharing');
47
48
		$container = $this->getContainer();
49
		$server = $container->getServer();
50
51
		$cloudFederationManager = $server->getCloudFederationProviderManager();
52
		$cloudFederationManager->addCloudFederationProvider('file',
53
			'Federated Files Sharing',
54
			function() use ($container) {
55
				$server = $container->getServer();
56
				return new CloudFederationProviderFiles(
57
					$server->getAppManager(),
58
					$server->query(FederatedShareProvider::class),
59
					$server->query(AddressHandler::class),
60
					$server->getLogger(),
61
					$server->getUserManager(),
62
					$server->getCloudIdManager(),
63
					$server->getActivityManager(),
64
					$server->getNotificationManager(),
65
					$server->getURLGenerator(),
66
					$server->getCloudFederationFactory(),
67
					$server->getCloudFederationProviderManager(),
68
					$server->getDatabaseConnection(),
69
					$server->getGroupManager()
70
				);
71
			});
72
73
		$container->registerService('RequestHandlerController', function(SimpleContainer $c) use ($server) {
74
			$addressHandler = new AddressHandler(
75
				$server->getURLGenerator(),
76
				$server->getL10N('federatedfilesharing'),
77
				$server->getCloudIdManager()
78
			);
79
			$notification = new Notifications(
80
				$addressHandler,
81
				$server->getHTTPClientService(),
82
				$server->query(\OCP\OCS\IDiscoveryService::class),
83
				\OC::$server->getJobList(),
84
				\OC::$server->getCloudFederationProviderManager(),
85
				\OC::$server->getCloudFederationFactory()
86
			);
87
			return new RequestHandlerController(
88
				$c->query('AppName'),
89
				$server->getRequest(),
90
				$this->getFederatedShareProvider(),
91
				$server->getDatabaseConnection(),
92
				$server->getShareManager(),
93
				$notification,
94
				$addressHandler,
95
				$server->getUserManager(),
96
				$server->getCloudIdManager(),
97
				$server->getLogger(),
98
				$server->getCloudFederationFactory(),
99
				$server->getCloudFederationProviderManager()
100
			);
101
		});
102
103
		// register events listeners
104
		$eventDispatcher = $server->getEventDispatcher();
105
		$manager = $server->getNotificationManager();
106
		$federatedShareProvider = $this->getFederatedShareProvider();
107
108
		$manager->registerNotifierService(Notifier::class);
109
		
110
		$eventDispatcher->addListener(
111
			'OCA\Files::loadAdditionalScripts',
112
			function() use ($federatedShareProvider) {
113
				if ($federatedShareProvider->isIncomingServer2serverShareEnabled()) {
114
					\OCP\Util::addScript('federatedfilesharing', 'external');
115
				}
116
			}
117
		);
118
119
	}
120
121
	/**
122
	 * get instance of federated share provider
123
	 *
124
	 * @return FederatedShareProvider
125
	 */
126
	public function getFederatedShareProvider() {
127
		if ($this->federatedShareProvider === null) {
128
			$this->initFederatedShareProvider();
129
		}
130
		return $this->federatedShareProvider;
131
	}
132
133
	/**
134
	 * initialize federated share provider
135
	 */
136
	protected function initFederatedShareProvider() {
137
		$c = $this->getContainer();
138
		$addressHandler = new \OCA\FederatedFileSharing\AddressHandler(
139
			\OC::$server->getURLGenerator(),
140
			\OC::$server->getL10N('federatedfilesharing'),
141
			\OC::$server->getCloudIdManager()
142
		);
143
		$notifications = new \OCA\FederatedFileSharing\Notifications(
144
			$addressHandler,
145
			\OC::$server->getHTTPClientService(),
146
			\OC::$server->query(\OCP\OCS\IDiscoveryService::class),
147
			\OC::$server->getJobList(),
148
			\OC::$server->getCloudFederationProviderManager(),
149
			\OC::$server->getCloudFederationFactory()
150
		);
151
		$tokenHandler = new \OCA\FederatedFileSharing\TokenHandler(
152
			\OC::$server->getSecureRandom()
153
		);
154
155
		$this->federatedShareProvider = new \OCA\FederatedFileSharing\FederatedShareProvider(
156
			\OC::$server->getDatabaseConnection(),
157
			$addressHandler,
158
			$notifications,
159
			$tokenHandler,
160
			\OC::$server->getL10N('federatedfilesharing'),
161
			\OC::$server->getLogger(),
162
			\OC::$server->getLazyRootFolder(),
163
			\OC::$server->getConfig(),
164
			\OC::$server->getUserManager(),
165
			\OC::$server->getCloudIdManager(),
166
			$c->query(IConfig::class),
167
			\OC::$server->getCloudFederationProviderManager()
168
169
		);
170
	}
171
172
}
173