Browse Source

Merge pull request #16972 from nextcloud/enh/default_client_timeout

Set a default request timeout
Roeland Jago Douma 4 years ago
parent
commit
b7301f40dd
2 changed files with 20 additions and 34 deletions
  1. 1 0
      lib/private/Http/Client/Client.php
  2. 19 34
      tests/lib/Http/Client/ClientTest.php

+ 1 - 0
lib/private/Http/Client/Client.php

@@ -63,6 +63,7 @@ class Client implements IClient {
 		$defaults = [
 			RequestOptions::PROXY => $this->getProxyUri(),
 			RequestOptions::VERIFY => $this->getCertBundle(),
+			RequestOptions::TIMEOUT => 30,
 		];
 
 		$options = array_merge($defaults, $options);

+ 19 - 34
tests/lib/Http/Client/ClientTest.php

@@ -111,8 +111,9 @@ class ClientTest extends \Test\TestCase {
 			'verify' => '/my/path.crt',
 			'proxy' => 'foo',
 			'headers' => [
-				'User-Agent' => 'Nextcloud Server Crawler'
-			]
+				'User-Agent' => 'Nextcloud Server Crawler',
+			],
+			'timeout' => 30,
 		];
 	}
 
@@ -128,13 +129,10 @@ class ClientTest extends \Test\TestCase {
 	public function testGetWithOptions(): void {
 		$this->setUpDefaultRequestOptions();
 
-		$options = [
+		$options = array_merge($this->defaultRequestOptions, [
 			'verify' => false,
 			'proxy' => 'bar',
-			'headers' => [
-				'User-Agent' => 'Nextcloud Server Crawler'
-			]
-		];
+		]);
 
 		$this->guzzleClient->method('request')
 			->with('get', 'http://localhost/', $options)
@@ -154,13 +152,10 @@ class ClientTest extends \Test\TestCase {
 	public function testPostWithOptions(): void {
 		$this->setUpDefaultRequestOptions();
 
-		$options = [
+		$options = array_merge($this->defaultRequestOptions, [
 			'verify' => false,
 			'proxy' => 'bar',
-			'headers' => [
-				'User-Agent' => 'Nextcloud Server Crawler'
-			]
-		];
+		]);
 
 		$this->guzzleClient->method('request')
 			->with('post', 'http://localhost/', $options)
@@ -180,13 +175,10 @@ class ClientTest extends \Test\TestCase {
 	public function testPutWithOptions(): void {
 		$this->setUpDefaultRequestOptions();
 
-		$options = [
+		$options = array_merge($this->defaultRequestOptions, [
 			'verify' => false,
 			'proxy' => 'bar',
-			'headers' => [
-				'User-Agent' => 'Nextcloud Server Crawler'
-			]
-		];
+		]);
 
 		$this->guzzleClient->method('request')
 			->with('put', 'http://localhost/', $options)
@@ -206,13 +198,10 @@ class ClientTest extends \Test\TestCase {
 	public function testDeleteWithOptions(): void {
 		$this->setUpDefaultRequestOptions();
 
-		$options = [
+		$options = array_merge($this->defaultRequestOptions, [
 			'verify' => false,
 			'proxy' => 'bar',
-			'headers' => [
-				'User-Agent' => 'Nextcloud Server Crawler'
-			]
-		];
+		]);
 
 		$this->guzzleClient->method('request')
 			->with('delete', 'http://localhost/', $options)
@@ -232,13 +221,10 @@ class ClientTest extends \Test\TestCase {
 	public function testOptionsWithOptions(): void {
 		$this->setUpDefaultRequestOptions();
 
-		$options = [
+		$options = array_merge($this->defaultRequestOptions, [
 			'verify' => false,
 			'proxy' => 'bar',
-			'headers' => [
-				'User-Agent' => 'Nextcloud Server Crawler'
-			]
-		];
+		]);
 
 		$this->guzzleClient->method('request')
 			->with('options', 'http://localhost/', $options)
@@ -258,13 +244,10 @@ class ClientTest extends \Test\TestCase {
 	public function testHeadWithOptions(): void {
 		$this->setUpDefaultRequestOptions();
 
-		$options = [
+		$options = array_merge($this->defaultRequestOptions, [
 			'verify' => false,
 			'proxy' => 'bar',
-			'headers' => [
-				'User-Agent' => 'Nextcloud Server Crawler'
-			]
-		];
+		]);
 
 		$this->guzzleClient->method('request')
 			->with('head', 'http://localhost/', $options)
@@ -288,7 +271,8 @@ class ClientTest extends \Test\TestCase {
 			'proxy' => null,
 			'headers' => [
 				'User-Agent' => 'Nextcloud Server Crawler'
-			]
+			],
+			'timeout' => 30,
 		], self::invokePrivate($this->client, 'buildRequestOptions', [[]]));
 	}
 
@@ -314,7 +298,8 @@ class ClientTest extends \Test\TestCase {
 			'proxy' => 'foo',
 			'headers' => [
 				'User-Agent' => 'Nextcloud Server Crawler'
-			]
+			],
+			'timeout' => 30,
 		], self::invokePrivate($this->client, 'buildRequestOptions', [[]]));
 	}
 }