Passed
Push — master ( de9f22...184dfe )
by Jeroen De
02:28
created

StreamBucketLogger::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 3
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare( strict_types = 1 );
4
5
namespace WMDE\Fundraising\Frontend\BucketTesting\Logging;
6
7
use DateTime;
8
use WMDE\Fundraising\Frontend\BucketTesting\Bucket;
9
10
class StreamBucketLogger implements BucketLogger {
11
12
	private $stream;
13
	private $timeTeller;
14
15
	/**
16
	 * @param resource $stream
17
	 * @param TimeTeller $timeTeller
18
	 */
19 40
	public function __construct( $stream, TimeTeller $timeTeller ) {
20 40
		$this->stream = $stream;
21 40
		$this->timeTeller = $timeTeller;
22 40
	}
23
24 40
	public function writeEvent( LoggingEvent $event, Bucket ...$buckets ) {
25 40
		fwrite(
26 40
			$this->stream,
27 40
			json_encode( [
28 40
				'date' => $this->timeTeller->getTime(),
29 40
				'eventName' => $event->getName(),
30 40
				'metadata' => $event->getMetaData(),
31 40
				'buckets' => $this->getBucketMap( $buckets )
32 40
			] ) . "\n"
33
		);
34 40
	}
35
36 40
	private function getBucketMap( array $buckets ): array {
37 40
		return array_reduce(
38 40
			$buckets,
39
			function ( array $bucketMap, Bucket $bucket ) {
40 34
				$bucketMap[$bucket->getCampaign()->getName()] = $bucket->getName();
41 34
				return $bucketMap;
42 40
			},
43 40
			[]
44
		);
45
	}
46
47
}
48