Completed
Push — master ( d7130a...41d031 )
by Luc
10:22
created

JsonDocumentLanguageEnricher   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 3
dl 0
loc 41
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A enrich() 0 21 3
1
<?php
2
3
namespace CultuurNet\UDB3\ReadModel;
4
5
use Broadway\Domain\Metadata;
6
use CultuurNet\UDB3\Language;
7
8
class JsonDocumentLanguageEnricher implements JsonDocumentMetaDataEnricherInterface
9
{
10
    /**
11
     * @var JsonDocumentLanguageAnalyzerInterface
12
     */
13
    private $languageAnalyzer;
14
15
    /**
16
     * @param JsonDocumentLanguageAnalyzerInterface $languageAnalyzer
17
     */
18
    public function __construct(
19
        JsonDocumentLanguageAnalyzerInterface $languageAnalyzer
20
    ) {
21
        $this->languageAnalyzer = $languageAnalyzer;
22
    }
23
24
    /**
25
     * @inheritdoc
26
     */
27
    public function enrich(JsonDocument $jsonDocument, Metadata $metadata)
28
    {
29
        $body = $jsonDocument->getBody();
30
31
        $castLanguageToString = function (Language $language) {
32
            return $language->getCode();
33
        };
34
35
        $availableLanguages = $this->languageAnalyzer->determineAvailableLanguages($jsonDocument);
36
        $completedLanguages = $this->languageAnalyzer->determineCompletedLanguages($jsonDocument);
37
38
        if (!empty($availableLanguages)) {
39
            $body->languages = array_map($castLanguageToString, $availableLanguages);
40
        }
41
42
        if (!empty($completedLanguages)) {
43
            $body->completedLanguages = array_map($castLanguageToString, $completedLanguages);
44
        }
45
46
        return $jsonDocument->withBody($body);
47
    }
48
}
49