Completed
Push — master ( 84a1c9...3ea9f1 )
by Morris
17:12
created
lib/private/Http/Client/Client.php 1 patch
Indentation   +283 added lines, -283 removed lines patch added patch discarded remove patch
@@ -39,302 +39,302 @@
 block discarded – undo
39 39
  * @package OC\Http
40 40
  */
41 41
 class Client implements IClient {
42
-	/** @var GuzzleClient */
43
-	private $client;
44
-	/** @var IConfig */
45
-	private $config;
46
-	/** @var ICertificateManager */
47
-	private $certificateManager;
48
-	private $configured = false;
49
-	/** @var HandlerStack */
50
-	private $stack;
42
+    /** @var GuzzleClient */
43
+    private $client;
44
+    /** @var IConfig */
45
+    private $config;
46
+    /** @var ICertificateManager */
47
+    private $certificateManager;
48
+    private $configured = false;
49
+    /** @var HandlerStack */
50
+    private $stack;
51 51
 
52
-	/**
53
-	 * @param IConfig $config
54
-	 * @param ICertificateManager $certificateManager
55
-	 * @param GuzzleClient $client
56
-	 */
57
-	public function __construct(
58
-		IConfig $config,
59
-		ICertificateManager $certificateManager,
60
-		GuzzleClient $client,
61
-		HandlerStack $stack
62
-	) {
63
-		$this->config = $config;
64
-		$this->client = $client;
65
-		$this->stack = $stack;
66
-		$this->certificateManager = $certificateManager;
67
-	}
52
+    /**
53
+     * @param IConfig $config
54
+     * @param ICertificateManager $certificateManager
55
+     * @param GuzzleClient $client
56
+     */
57
+    public function __construct(
58
+        IConfig $config,
59
+        ICertificateManager $certificateManager,
60
+        GuzzleClient $client,
61
+        HandlerStack $stack
62
+    ) {
63
+        $this->config = $config;
64
+        $this->client = $client;
65
+        $this->stack = $stack;
66
+        $this->certificateManager = $certificateManager;
67
+    }
68 68
 
69
-	/**
70
-	 * Sets the default options to the client
71
-	 */
72
-	private function setDefaultOptions() {
73
-		if ($this->configured) {
74
-			return;
75
-		}
76
-		$this->configured = true;
69
+    /**
70
+     * Sets the default options to the client
71
+     */
72
+    private function setDefaultOptions() {
73
+        if ($this->configured) {
74
+            return;
75
+        }
76
+        $this->configured = true;
77 77
 
78
-		$this->stack->push(Middleware::mapRequest(function (RequestInterface $request) {
79
-			return $request
80
-				->withHeader('User-Agent', 'Nextcloud Server Crawler');
81
-		}));
82
-	}
78
+        $this->stack->push(Middleware::mapRequest(function (RequestInterface $request) {
79
+            return $request
80
+                ->withHeader('User-Agent', 'Nextcloud Server Crawler');
81
+        }));
82
+    }
83 83
 
84
-	private function getRequestOptions() {
85
-		$options = [
86
-			'verify' => $this->getCertBundle(),
87
-		];
88
-		$proxyUri = $this->getProxyUri();
89
-		if ($proxyUri !== '') {
90
-			$options['proxy'] = $proxyUri;
91
-		}
92
-		return $options;
93
-	}
84
+    private function getRequestOptions() {
85
+        $options = [
86
+            'verify' => $this->getCertBundle(),
87
+        ];
88
+        $proxyUri = $this->getProxyUri();
89
+        if ($proxyUri !== '') {
90
+            $options['proxy'] = $proxyUri;
91
+        }
92
+        return $options;
93
+    }
94 94
 
95
-	private function getCertBundle() {
96
-		if ($this->certificateManager->listCertificates() !== []) {
97
-			return $this->certificateManager->getAbsoluteBundlePath();
98
-		} else {
99
-			// If the instance is not yet setup we need to use the static path as
100
-			// $this->certificateManager->getAbsoluteBundlePath() tries to instantiiate
101
-			// a view
102
-			if ($this->config->getSystemValue('installed', false)) {
103
-				return $this->certificateManager->getAbsoluteBundlePath(null);
104
-			} else {
105
-				return \OC::$SERVERROOT . '/resources/config/ca-bundle.crt';
106
-			}
107
-		}
108
-	}
95
+    private function getCertBundle() {
96
+        if ($this->certificateManager->listCertificates() !== []) {
97
+            return $this->certificateManager->getAbsoluteBundlePath();
98
+        } else {
99
+            // If the instance is not yet setup we need to use the static path as
100
+            // $this->certificateManager->getAbsoluteBundlePath() tries to instantiiate
101
+            // a view
102
+            if ($this->config->getSystemValue('installed', false)) {
103
+                return $this->certificateManager->getAbsoluteBundlePath(null);
104
+            } else {
105
+                return \OC::$SERVERROOT . '/resources/config/ca-bundle.crt';
106
+            }
107
+        }
108
+    }
109 109
 
110
-	/**
111
-	 * Get the proxy URI
112
-	 *
113
-	 * @return string
114
-	 */
115
-	private function getProxyUri(): string {
116
-		$proxyHost = $this->config->getSystemValue('proxy', null);
117
-		$proxyUserPwd = $this->config->getSystemValue('proxyuserpwd', null);
118
-		$proxyUri = '';
110
+    /**
111
+     * Get the proxy URI
112
+     *
113
+     * @return string
114
+     */
115
+    private function getProxyUri(): string {
116
+        $proxyHost = $this->config->getSystemValue('proxy', null);
117
+        $proxyUserPwd = $this->config->getSystemValue('proxyuserpwd', null);
118
+        $proxyUri = '';
119 119
 
120
-		if ($proxyUserPwd !== null) {
121
-			$proxyUri .= $proxyUserPwd . '@';
122
-		}
123
-		if ($proxyHost !== null) {
124
-			$proxyUri .= $proxyHost;
125
-		}
120
+        if ($proxyUserPwd !== null) {
121
+            $proxyUri .= $proxyUserPwd . '@';
122
+        }
123
+        if ($proxyHost !== null) {
124
+            $proxyUri .= $proxyHost;
125
+        }
126 126
 
127
-		return $proxyUri;
128
-	}
127
+        return $proxyUri;
128
+    }
129 129
 
130
-	/**
131
-	 * Sends a GET request
132
-	 *
133
-	 * @param string $uri
134
-	 * @param array $options Array such as
135
-	 *              'query' => [
136
-	 *                  'field' => 'abc',
137
-	 *                  'other_field' => '123',
138
-	 *                  'file_name' => fopen('/path/to/file', 'r'),
139
-	 *              ],
140
-	 *              'headers' => [
141
-	 *                  'foo' => 'bar',
142
-	 *              ],
143
-	 *              'cookies' => ['
144
-	 *                  'foo' => 'bar',
145
-	 *              ],
146
-	 *              'allow_redirects' => [
147
-	 *                   'max'       => 10,  // allow at most 10 redirects.
148
-	 *                   'strict'    => true,     // use "strict" RFC compliant redirects.
149
-	 *                   'referer'   => true,     // add a Referer header
150
-	 *                   'protocols' => ['https'] // only allow https URLs
151
-	 *              ],
152
-	 *              'save_to' => '/path/to/file', // save to a file or a stream
153
-	 *              'verify' => true, // bool or string to CA file
154
-	 *              'debug' => true,
155
-	 *              'timeout' => 5,
156
-	 * @return IResponse
157
-	 * @throws \Exception If the request could not get completed
158
-	 */
159
-	public function get(string $uri, array $options = []): IResponse {
160
-		$this->setDefaultOptions();
161
-		$response = $this->client->request('get', $uri, array_merge($this->getRequestOptions(), $options));
162
-		$isStream = isset($options['stream']) && $options['stream'];
163
-		return new Response($response, $isStream);
164
-	}
130
+    /**
131
+     * Sends a GET request
132
+     *
133
+     * @param string $uri
134
+     * @param array $options Array such as
135
+     *              'query' => [
136
+     *                  'field' => 'abc',
137
+     *                  'other_field' => '123',
138
+     *                  'file_name' => fopen('/path/to/file', 'r'),
139
+     *              ],
140
+     *              'headers' => [
141
+     *                  'foo' => 'bar',
142
+     *              ],
143
+     *              'cookies' => ['
144
+     *                  'foo' => 'bar',
145
+     *              ],
146
+     *              'allow_redirects' => [
147
+     *                   'max'       => 10,  // allow at most 10 redirects.
148
+     *                   'strict'    => true,     // use "strict" RFC compliant redirects.
149
+     *                   'referer'   => true,     // add a Referer header
150
+     *                   'protocols' => ['https'] // only allow https URLs
151
+     *              ],
152
+     *              'save_to' => '/path/to/file', // save to a file or a stream
153
+     *              'verify' => true, // bool or string to CA file
154
+     *              'debug' => true,
155
+     *              'timeout' => 5,
156
+     * @return IResponse
157
+     * @throws \Exception If the request could not get completed
158
+     */
159
+    public function get(string $uri, array $options = []): IResponse {
160
+        $this->setDefaultOptions();
161
+        $response = $this->client->request('get', $uri, array_merge($this->getRequestOptions(), $options));
162
+        $isStream = isset($options['stream']) && $options['stream'];
163
+        return new Response($response, $isStream);
164
+    }
165 165
 
166
-	/**
167
-	 * Sends a HEAD request
168
-	 *
169
-	 * @param string $uri
170
-	 * @param array $options Array such as
171
-	 *              'headers' => [
172
-	 *                  'foo' => 'bar',
173
-	 *              ],
174
-	 *              'cookies' => ['
175
-	 *                  'foo' => 'bar',
176
-	 *              ],
177
-	 *              'allow_redirects' => [
178
-	 *                   'max'       => 10,  // allow at most 10 redirects.
179
-	 *                   'strict'    => true,     // use "strict" RFC compliant redirects.
180
-	 *                   'referer'   => true,     // add a Referer header
181
-	 *                   'protocols' => ['https'] // only allow https URLs
182
-	 *              ],
183
-	 *              'save_to' => '/path/to/file', // save to a file or a stream
184
-	 *              'verify' => true, // bool or string to CA file
185
-	 *              'debug' => true,
186
-	 *              'timeout' => 5,
187
-	 * @return IResponse
188
-	 * @throws \Exception If the request could not get completed
189
-	 */
190
-	public function head(string $uri, array $options = []): IResponse {
191
-		$this->setDefaultOptions();
192
-		$response = $this->client->request('head', $uri, array_merge($this->getRequestOptions(), $options));
193
-		return new Response($response);
194
-	}
166
+    /**
167
+     * Sends a HEAD request
168
+     *
169
+     * @param string $uri
170
+     * @param array $options Array such as
171
+     *              'headers' => [
172
+     *                  'foo' => 'bar',
173
+     *              ],
174
+     *              'cookies' => ['
175
+     *                  'foo' => 'bar',
176
+     *              ],
177
+     *              'allow_redirects' => [
178
+     *                   'max'       => 10,  // allow at most 10 redirects.
179
+     *                   'strict'    => true,     // use "strict" RFC compliant redirects.
180
+     *                   'referer'   => true,     // add a Referer header
181
+     *                   'protocols' => ['https'] // only allow https URLs
182
+     *              ],
183
+     *              'save_to' => '/path/to/file', // save to a file or a stream
184
+     *              'verify' => true, // bool or string to CA file
185
+     *              'debug' => true,
186
+     *              'timeout' => 5,
187
+     * @return IResponse
188
+     * @throws \Exception If the request could not get completed
189
+     */
190
+    public function head(string $uri, array $options = []): IResponse {
191
+        $this->setDefaultOptions();
192
+        $response = $this->client->request('head', $uri, array_merge($this->getRequestOptions(), $options));
193
+        return new Response($response);
194
+    }
195 195
 
196
-	/**
197
-	 * Sends a POST request
198
-	 *
199
-	 * @param string $uri
200
-	 * @param array $options Array such as
201
-	 *              'body' => [
202
-	 *                  'field' => 'abc',
203
-	 *                  'other_field' => '123',
204
-	 *                  'file_name' => fopen('/path/to/file', 'r'),
205
-	 *              ],
206
-	 *              'headers' => [
207
-	 *                  'foo' => 'bar',
208
-	 *              ],
209
-	 *              'cookies' => ['
210
-	 *                  'foo' => 'bar',
211
-	 *              ],
212
-	 *              'allow_redirects' => [
213
-	 *                   'max'       => 10,  // allow at most 10 redirects.
214
-	 *                   'strict'    => true,     // use "strict" RFC compliant redirects.
215
-	 *                   'referer'   => true,     // add a Referer header
216
-	 *                   'protocols' => ['https'] // only allow https URLs
217
-	 *              ],
218
-	 *              'save_to' => '/path/to/file', // save to a file or a stream
219
-	 *              'verify' => true, // bool or string to CA file
220
-	 *              'debug' => true,
221
-	 *              'timeout' => 5,
222
-	 * @return IResponse
223
-	 * @throws \Exception If the request could not get completed
224
-	 */
225
-	public function post(string $uri, array $options = []): IResponse {
226
-		$this->setDefaultOptions();
227
-		if (isset($options['body']) && is_array($options['body'])) {
228
-			$options['form_params'] = $options['body'];
229
-			unset($options['body']);
230
-		}
231
-		$response = $this->client->request('post', $uri, array_merge($this->getRequestOptions(), $options));
232
-		return new Response($response);
233
-	}
196
+    /**
197
+     * Sends a POST request
198
+     *
199
+     * @param string $uri
200
+     * @param array $options Array such as
201
+     *              'body' => [
202
+     *                  'field' => 'abc',
203
+     *                  'other_field' => '123',
204
+     *                  'file_name' => fopen('/path/to/file', 'r'),
205
+     *              ],
206
+     *              'headers' => [
207
+     *                  'foo' => 'bar',
208
+     *              ],
209
+     *              'cookies' => ['
210
+     *                  'foo' => 'bar',
211
+     *              ],
212
+     *              'allow_redirects' => [
213
+     *                   'max'       => 10,  // allow at most 10 redirects.
214
+     *                   'strict'    => true,     // use "strict" RFC compliant redirects.
215
+     *                   'referer'   => true,     // add a Referer header
216
+     *                   'protocols' => ['https'] // only allow https URLs
217
+     *              ],
218
+     *              'save_to' => '/path/to/file', // save to a file or a stream
219
+     *              'verify' => true, // bool or string to CA file
220
+     *              'debug' => true,
221
+     *              'timeout' => 5,
222
+     * @return IResponse
223
+     * @throws \Exception If the request could not get completed
224
+     */
225
+    public function post(string $uri, array $options = []): IResponse {
226
+        $this->setDefaultOptions();
227
+        if (isset($options['body']) && is_array($options['body'])) {
228
+            $options['form_params'] = $options['body'];
229
+            unset($options['body']);
230
+        }
231
+        $response = $this->client->request('post', $uri, array_merge($this->getRequestOptions(), $options));
232
+        return new Response($response);
233
+    }
234 234
 
235
-	/**
236
-	 * Sends a PUT request
237
-	 *
238
-	 * @param string $uri
239
-	 * @param array $options Array such as
240
-	 *              'body' => [
241
-	 *                  'field' => 'abc',
242
-	 *                  'other_field' => '123',
243
-	 *                  'file_name' => fopen('/path/to/file', 'r'),
244
-	 *              ],
245
-	 *              'headers' => [
246
-	 *                  'foo' => 'bar',
247
-	 *              ],
248
-	 *              'cookies' => ['
249
-	 *                  'foo' => 'bar',
250
-	 *              ],
251
-	 *              'allow_redirects' => [
252
-	 *                   'max'       => 10,  // allow at most 10 redirects.
253
-	 *                   'strict'    => true,     // use "strict" RFC compliant redirects.
254
-	 *                   'referer'   => true,     // add a Referer header
255
-	 *                   'protocols' => ['https'] // only allow https URLs
256
-	 *              ],
257
-	 *              'save_to' => '/path/to/file', // save to a file or a stream
258
-	 *              'verify' => true, // bool or string to CA file
259
-	 *              'debug' => true,
260
-	 *              'timeout' => 5,
261
-	 * @return IResponse
262
-	 * @throws \Exception If the request could not get completed
263
-	 */
264
-	public function put(string $uri, array $options = []): IResponse {
265
-		$this->setDefaultOptions();
266
-		$response = $this->client->request('put', $uri, array_merge($this->getRequestOptions(), $options));
267
-		return new Response($response);
268
-	}
235
+    /**
236
+     * Sends a PUT request
237
+     *
238
+     * @param string $uri
239
+     * @param array $options Array such as
240
+     *              'body' => [
241
+     *                  'field' => 'abc',
242
+     *                  'other_field' => '123',
243
+     *                  'file_name' => fopen('/path/to/file', 'r'),
244
+     *              ],
245
+     *              'headers' => [
246
+     *                  'foo' => 'bar',
247
+     *              ],
248
+     *              'cookies' => ['
249
+     *                  'foo' => 'bar',
250
+     *              ],
251
+     *              'allow_redirects' => [
252
+     *                   'max'       => 10,  // allow at most 10 redirects.
253
+     *                   'strict'    => true,     // use "strict" RFC compliant redirects.
254
+     *                   'referer'   => true,     // add a Referer header
255
+     *                   'protocols' => ['https'] // only allow https URLs
256
+     *              ],
257
+     *              'save_to' => '/path/to/file', // save to a file or a stream
258
+     *              'verify' => true, // bool or string to CA file
259
+     *              'debug' => true,
260
+     *              'timeout' => 5,
261
+     * @return IResponse
262
+     * @throws \Exception If the request could not get completed
263
+     */
264
+    public function put(string $uri, array $options = []): IResponse {
265
+        $this->setDefaultOptions();
266
+        $response = $this->client->request('put', $uri, array_merge($this->getRequestOptions(), $options));
267
+        return new Response($response);
268
+    }
269 269
 
270
-	/**
271
-	 * Sends a DELETE request
272
-	 *
273
-	 * @param string $uri
274
-	 * @param array $options Array such as
275
-	 *              'body' => [
276
-	 *                  'field' => 'abc',
277
-	 *                  'other_field' => '123',
278
-	 *                  'file_name' => fopen('/path/to/file', 'r'),
279
-	 *              ],
280
-	 *              'headers' => [
281
-	 *                  'foo' => 'bar',
282
-	 *              ],
283
-	 *              'cookies' => ['
284
-	 *                  'foo' => 'bar',
285
-	 *              ],
286
-	 *              'allow_redirects' => [
287
-	 *                   'max'       => 10,  // allow at most 10 redirects.
288
-	 *                   'strict'    => true,     // use "strict" RFC compliant redirects.
289
-	 *                   'referer'   => true,     // add a Referer header
290
-	 *                   'protocols' => ['https'] // only allow https URLs
291
-	 *              ],
292
-	 *              'save_to' => '/path/to/file', // save to a file or a stream
293
-	 *              'verify' => true, // bool or string to CA file
294
-	 *              'debug' => true,
295
-	 *              'timeout' => 5,
296
-	 * @return IResponse
297
-	 * @throws \Exception If the request could not get completed
298
-	 */
299
-	public function delete(string $uri, array $options = []): IResponse {
300
-		$this->setDefaultOptions();
301
-		$response = $this->client->request('delete', $uri, array_merge($this->getRequestOptions(), $options));
302
-		return new Response($response);
303
-	}
270
+    /**
271
+     * Sends a DELETE request
272
+     *
273
+     * @param string $uri
274
+     * @param array $options Array such as
275
+     *              'body' => [
276
+     *                  'field' => 'abc',
277
+     *                  'other_field' => '123',
278
+     *                  'file_name' => fopen('/path/to/file', 'r'),
279
+     *              ],
280
+     *              'headers' => [
281
+     *                  'foo' => 'bar',
282
+     *              ],
283
+     *              'cookies' => ['
284
+     *                  'foo' => 'bar',
285
+     *              ],
286
+     *              'allow_redirects' => [
287
+     *                   'max'       => 10,  // allow at most 10 redirects.
288
+     *                   'strict'    => true,     // use "strict" RFC compliant redirects.
289
+     *                   'referer'   => true,     // add a Referer header
290
+     *                   'protocols' => ['https'] // only allow https URLs
291
+     *              ],
292
+     *              'save_to' => '/path/to/file', // save to a file or a stream
293
+     *              'verify' => true, // bool or string to CA file
294
+     *              'debug' => true,
295
+     *              'timeout' => 5,
296
+     * @return IResponse
297
+     * @throws \Exception If the request could not get completed
298
+     */
299
+    public function delete(string $uri, array $options = []): IResponse {
300
+        $this->setDefaultOptions();
301
+        $response = $this->client->request('delete', $uri, array_merge($this->getRequestOptions(), $options));
302
+        return new Response($response);
303
+    }
304 304
 
305 305
 
306
-	/**
307
-	 * Sends a options request
308
-	 *
309
-	 * @param string $uri
310
-	 * @param array $options Array such as
311
-	 *              'body' => [
312
-	 *                  'field' => 'abc',
313
-	 *                  'other_field' => '123',
314
-	 *                  'file_name' => fopen('/path/to/file', 'r'),
315
-	 *              ],
316
-	 *              'headers' => [
317
-	 *                  'foo' => 'bar',
318
-	 *              ],
319
-	 *              'cookies' => ['
320
-	 *                  'foo' => 'bar',
321
-	 *              ],
322
-	 *              'allow_redirects' => [
323
-	 *                   'max'       => 10,  // allow at most 10 redirects.
324
-	 *                   'strict'    => true,     // use "strict" RFC compliant redirects.
325
-	 *                   'referer'   => true,     // add a Referer header
326
-	 *                   'protocols' => ['https'] // only allow https URLs
327
-	 *              ],
328
-	 *              'save_to' => '/path/to/file', // save to a file or a stream
329
-	 *              'verify' => true, // bool or string to CA file
330
-	 *              'debug' => true,
331
-	 *              'timeout' => 5,
332
-	 * @return IResponse
333
-	 * @throws \Exception If the request could not get completed
334
-	 */
335
-	public function options(string $uri, array $options = []): IResponse {
336
-		$this->setDefaultOptions();
337
-		$response = $this->client->request('options', $uri, array_merge($this->getRequestOptions(), $options));
338
-		return new Response($response);
339
-	}
306
+    /**
307
+     * Sends a options request
308
+     *
309
+     * @param string $uri
310
+     * @param array $options Array such as
311
+     *              'body' => [
312
+     *                  'field' => 'abc',
313
+     *                  'other_field' => '123',
314
+     *                  'file_name' => fopen('/path/to/file', 'r'),
315
+     *              ],
316
+     *              'headers' => [
317
+     *                  'foo' => 'bar',
318
+     *              ],
319
+     *              'cookies' => ['
320
+     *                  'foo' => 'bar',
321
+     *              ],
322
+     *              'allow_redirects' => [
323
+     *                   'max'       => 10,  // allow at most 10 redirects.
324
+     *                   'strict'    => true,     // use "strict" RFC compliant redirects.
325
+     *                   'referer'   => true,     // add a Referer header
326
+     *                   'protocols' => ['https'] // only allow https URLs
327
+     *              ],
328
+     *              'save_to' => '/path/to/file', // save to a file or a stream
329
+     *              'verify' => true, // bool or string to CA file
330
+     *              'debug' => true,
331
+     *              'timeout' => 5,
332
+     * @return IResponse
333
+     * @throws \Exception If the request could not get completed
334
+     */
335
+    public function options(string $uri, array $options = []): IResponse {
336
+        $this->setDefaultOptions();
337
+        $response = $this->client->request('options', $uri, array_merge($this->getRequestOptions(), $options));
338
+        return new Response($response);
339
+    }
340 340
 }
Please login to merge, or discard this patch.