File: NullHttpRequestFactory.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (69 lines) | stat: -rw-r--r-- 1,757 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php

use MediaWiki\Config\ServiceOptions;
use MediaWiki\Http\HttpRequestFactory;
use MediaWiki\MainConfigNames;
use PHPUnit\Framework\Assert;
use PHPUnit\Framework\AssertionFailedError;
use Psr\Log\NullLogger;

/**
 * A simple {@link HttpRequestFactory} implementation that can be used to prevent
 * HTTP requests in tests. All attempts to create requests will fail.
 *
 * Use MockHttpTrait for creating a mock factory and controlling responses.
 *
 * @author Daniel Kinzler
 * @license GPL-2.0-or-later
 */
class NullHttpRequestFactory extends HttpRequestFactory {

	public function __construct() {
		$options = new ServiceOptions(
			self::CONSTRUCTOR_OPTIONS, [
			MainConfigNames::HTTPTimeout => 1,
			MainConfigNames::HTTPConnectTimeout => 1,
			MainConfigNames::HTTPMaxTimeout => 2,
			MainConfigNames::HTTPMaxConnectTimeout => 2,
			MainConfigNames::LocalVirtualHosts => [],
			MainConfigNames::LocalHTTPProxy => false,
			]
		);

		parent::__construct( $options, new NullLogger() );
	}

	/**
	 * Always fails.
	 *
	 * @param string $url
	 * @param array $options
	 * @param string $caller
	 *
	 * @throws AssertionFailedError always
	 */
	public function create( $url, array $options = [], $caller = __METHOD__ ) {
		Assert::fail( "HTTP request blocked: $url by $caller. Use MockHttpTrait." );
	}

	/**
	 * Returns a NullMultiHttpClient that will fail to make any requests.
	 *
	 * @param array $options
	 *
	 * @return NullMultiHttpClient
	 */
	public function createMultiClient( $options = [] ) {
		return new NullMultiHttpClient( $options );
	}

	/**
	 * @param array $config
	 *
	 * @return \GuzzleHttp\Client
	 */
	public function createGuzzleClient( array $config = [] ): \GuzzleHttp\Client {
		return new NullGuzzleClient( $config );
	}

}