SiteLinkSerializer   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 3
dl 0
loc 56
ccs 17
cts 17
cp 1
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A isSerializerFor() 0 3 1
A serialize() 0 10 2
A getSerialized() 0 7 1
A serializeBadges() 0 9 2
1
<?php
2
3
namespace Wikibase\DataModel\Serializers;
4
5
use Serializers\DispatchableSerializer;
6
use Serializers\Exceptions\SerializationException;
7
use Serializers\Exceptions\UnsupportedObjectException;
8
use Wikibase\DataModel\Entity\ItemId;
9
use Wikibase\DataModel\SiteLink;
10
11
/**
12
 * Package private
13
 *
14
 * @license GPL-2.0-or-later
15
 * @author Thomas Pellissier Tanon
16
 */
17
class SiteLinkSerializer implements DispatchableSerializer {
18
19
	/**
20
	 * @see Serializer::isSerializerFor
21
	 *
22
	 * @param mixed $object
23
	 *
24
	 * @return bool
25
	 */
26 16
	public function isSerializerFor( $object ) {
27 16
		return $object instanceof SiteLink;
28
	}
29
30
	/**
31
	 * @see Serializer::serialize
32
	 *
33
	 * @param SiteLink $object
34
	 *
35
	 * @throws SerializationException
36
	 * @return array
37
	 */
38 11
	public function serialize( $object ) {
39 11
		if ( !$this->isSerializerFor( $object ) ) {
40 3
			throw new UnsupportedObjectException(
41 3
				$object,
42 3
				'SiteLinkSerializer can only serialize SiteLink objects'
43
			);
44
		}
45
46 8
		return $this->getSerialized( $object );
47
	}
48
49 8
	private function getSerialized( SiteLink $siteLink ) {
50
		return [
51 8
			'site' => $siteLink->getSiteId(),
52 8
			'title' => $siteLink->getPageName(),
53 8
			'badges' => $this->serializeBadges( $siteLink->getBadges() )
54
		];
55
	}
56
57
	/**
58
	 * @param ItemId[] $badges
59
	 *
60
	 * @return string[]
61
	 */
62 8
	private function serializeBadges( array $badges ) {
63 8
		$serialization = [];
64
65 8
		foreach ( $badges as $badge ) {
66 4
			$serialization[] = $badge->getSerialization();
67
		}
68
69 8
		return $serialization;
70
	}
71
72
}
73