SiteLinkSerializer::serializeBadges()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 9
ccs 5
cts 5
cp 1
rs 9.9666
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 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