Completed
Push — master ( 8b683f...7025f1 )
by Morris
29:10 queued 12:40
created

Application::__construct()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 57

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 57
rs 8.9381
c 0
b 0
f 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 Robin Appelman <[email protected]>
8
 * @author Roeland Jago Douma <[email protected]>
9
 *
10
 * @license AGPL-3.0
11
 *
12
 * This code is free software: you can redistribute it and/or modify
13
 * it under the terms of the GNU Affero General Public License, version 3,
14
 * as published by the Free Software Foundation.
15
 *
16
 * This program is distributed in the hope that it will be useful,
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
 * GNU Affero General Public License for more details.
20
 *
21
 * You should have received a copy of the GNU Affero General Public License, version 3,
22
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
23
 *
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\OCM\CloudFederationProvider;
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
				);
70
			});
71
72
		$container->registerService('RequestHandlerController', function(SimpleContainer $c) use ($server) {
73
			$addressHandler = new AddressHandler(
74
				$server->getURLGenerator(),
75
				$server->getL10N('federatedfilesharing'),
76
				$server->getCloudIdManager()
77
			);
78
			$notification = new Notifications(
79
				$addressHandler,
80
				$server->getHTTPClientService(),
81
				$server->query(\OCP\OCS\IDiscoveryService::class),
82
				\OC::$server->getJobList(),
83
				\OC::$server->getCloudFederationProviderManager(),
84
				\OC::$server->getCloudFederationFactory()
85
			);
86
			return new RequestHandlerController(
87
				$c->query('AppName'),
88
				$server->getRequest(),
89
				$this->getFederatedShareProvider(),
90
				$server->getDatabaseConnection(),
91
				$server->getShareManager(),
92
				$notification,
93
				$addressHandler,
94
				$server->getUserManager(),
95
				$server->getCloudIdManager(),
96
				$server->getLogger(),
97
				$server->getCloudFederationFactory(),
98
				$server->getCloudFederationProviderManager()
99
			);
100
		});
101
	}
102
103
	/**
104
	 * get instance of federated share provider
105
	 *
106
	 * @return FederatedShareProvider
107
	 */
108
	public function getFederatedShareProvider() {
109
		if ($this->federatedShareProvider === null) {
110
			$this->initFederatedShareProvider();
111
		}
112
		return $this->federatedShareProvider;
113
	}
114
115
	/**
116
	 * initialize federated share provider
117
	 */
118
	protected function initFederatedShareProvider() {
119
		$c = $this->getContainer();
120
		$addressHandler = new \OCA\FederatedFileSharing\AddressHandler(
121
			\OC::$server->getURLGenerator(),
122
			\OC::$server->getL10N('federatedfilesharing'),
123
			\OC::$server->getCloudIdManager()
124
		);
125
		$notifications = new \OCA\FederatedFileSharing\Notifications(
126
			$addressHandler,
127
			\OC::$server->getHTTPClientService(),
128
			\OC::$server->query(\OCP\OCS\IDiscoveryService::class),
129
			\OC::$server->getJobList(),
130
			\OC::$server->getCloudFederationProviderManager(),
131
			\OC::$server->getCloudFederationFactory()
132
		);
133
		$tokenHandler = new \OCA\FederatedFileSharing\TokenHandler(
134
			\OC::$server->getSecureRandom()
135
		);
136
137
		$this->federatedShareProvider = new \OCA\FederatedFileSharing\FederatedShareProvider(
138
			\OC::$server->getDatabaseConnection(),
139
			$addressHandler,
140
			$notifications,
141
			$tokenHandler,
142
			\OC::$server->getL10N('federatedfilesharing'),
143
			\OC::$server->getLogger(),
144
			\OC::$server->getLazyRootFolder(),
145
			\OC::$server->getConfig(),
146
			\OC::$server->getUserManager(),
147
			\OC::$server->getCloudIdManager(),
148
			$c->query(IConfig::class)
149
		);
150
	}
151
152
}
153