Completed
Push — master ( 49512c...0c2959 )
by adam
02:34
created

ClientFactory::setLogger()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 3
ccs 0
cts 3
cp 0
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 2
1
<?php
2
3
namespace Mediawiki\Api\Guzzle;
4
5
use GuzzleHttp\Client;
6
use GuzzleHttp\Handler\CurlHandler;
7
use GuzzleHttp\HandlerStack;
8
use Psr\Log\LoggerAwareInterface;
9
use Psr\Log\LoggerInterface;
10
use Psr\Log\NullLogger;
11
12
/**
13
 * @since 2.1.0
14
 *
15
 * @author Addshore
16
 */
17
class ClientFactory implements LoggerAwareInterface {
18
19
	private $client;
20
	private $logger;
21
22
	public function __construct() {
23
		$this->logger = new NullLogger();
24
	}
25
26
	/**
27
	 * @since 2.1.0
28
	 *
29
	 * @return Client
30
	 */
31
	public function getClient() {
32
		if( $this->client === null ) {
33
			$this->client = $this->newClient();
34
		}
35
		return $this->client;
36
	}
37
38
	/**
39
	 * @return Client
40
	 */
41
	private function newClient() {
42
		$middlewareFactory = new MiddlewareFactory();
43
		$middlewareFactory->setLogger( $this->logger );
44
45
		$handlerStack = HandlerStack::create( new CurlHandler() );
46
		$handlerStack->push( $middlewareFactory->retry() );
47
48
		return new Client( array(
49
			'cookies' => true,
50
			'handler' => $handlerStack,
51
			'headers' => array( 'User-Agent' => 'Addwiki - mediawiki-api-base' ),
52
		) );
53
	}
54
55
	/**
56
	 * Sets a logger instance on the object
57
	 *
58
	 * @since 2.1.0
59
	 *
60
	 * @param LoggerInterface $logger
61
	 *
62
	 * @return null
63
	 */
64
	public function setLogger( LoggerInterface $logger ) {
65
		$this->logger = $logger;
66
	}
67
68
}
69