Passed
Push — master ( 8fed13...72e6d1 )
by Daimona
02:00
created

RequestFactory::createRequest()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
c 0
b 0
f 0
nc 2
nop 3
dl 0
loc 6
rs 10
1
<?php declare( strict_types=1 );
2
3
namespace BotRiconferme\Request;
4
5
use Psr\Log\LoggerInterface;
6
7
class RequestFactory {
8
	/** @var string */
9
	private $domain;
10
	/** @var LoggerInterface */
11
	private $logger;
12
13
	/**
14
	 * @param LoggerInterface $logger
15
	 * @param string $domain
16
	 */
17
	public function __construct( LoggerInterface $logger, string $domain ) {
18
		$this->logger = $logger;
19
		$this->domain = $domain;
20
	}
21
22
	/**
23
	 * @param array $params
24
	 * @phan-param array<int|string|bool> $params
25
	 * @param string[] $cookies
26
	 * @param callable $cookiesCallback
27
	 * @return RequestBase
28
	 */
29
	public function createRequest( array $params, array $cookies, callable $cookiesCallback ) {
30
		$ret = extension_loaded( 'curl' )
31
			? new CurlRequest( $this->logger, $params, $this->domain, $cookiesCallback )
32
			: new NativeRequest( $this->logger, $params, $this->domain, $cookiesCallback );
33
		$ret->setCookies( $cookies );
34
		return $ret;
35
	}
36
37
	/**
38
	 * Similar to createRequest, but doesn't save any info like cookies.
39
	 *
40
	 * @param array $params
41
	 * @phan-param array<int|string|bool> $params
42
	 * @return RequestBase
43
	 */
44
	public function createStandaloneRequest( array $params ) {
45
		$cookiesCallback = function ( array $newCookies ) {
46
			$this->logger->warning( 'Standalone request with set-cookie: ' . implode( ', ', array_keys( $newCookies ) ) );
47
		};
48
		return extension_loaded( 'curl' )
49
			? new CurlRequest( $this->logger, $params, $this->domain, $cookiesCallback )
50
			: new NativeRequest( $this->logger, $params, $this->domain, $cookiesCallback );
51
	}
52
}
53