Completed
Push — master ( 0f6ac6...c701d2 )
by WEBEWEB
01:05
created

deserializeCommunesResponse()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 16
rs 9.7333
c 0
b 0
f 0
cc 3
nc 3
nop 1
1
<?php
2
3
/*
4
 * This file is part of the geo-api-library package.
5
 *
6
 * (c) 2020 WEBEWEB
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace WBW\Library\GeoAPI\Serializer;
13
14
use WBW\Library\Core\Argument\Helper\ArrayHelper;
15
use WBW\Library\GeoAPI\Model\Commune;
16
use WBW\Library\GeoAPI\Model\Departement;
17
use WBW\Library\GeoAPI\Model\Region;
18
use WBW\Library\GeoAPI\Model\Response\CommunesResponse;
19
use WBW\Library\GeoAPI\Model\Response\DepartementsResponse;
20
use WBW\Library\GeoAPI\Model\Response\RegionsResponse;
21
22
/**
23
 * Découpage administratif response deserializer.
24
 *
25
 * @author webeweb <https://github.com/webeweb/>
26
 * @package WBW\Library\GeoAPI\Serializer
27
 */
28
class DecoupageAdministratifResponseDeserializer {
29
30
    /**
31
     * Deserializes a commune.
32
     *
33
     * @param array $response The response.
34
     * @return Commune Returns the commune.
35
     */
36
    protected static function deserializeCommune(array $response) {
37
38
        $model = new Commune();
39
        $model->setNom(ArrayHelper::get($response, "nom"));
40
        $model->setCode(ArrayHelper::get($response, "code"));
41
        $model->setCodeDepartement(ArrayHelper::get($response, "codeDepartement"));
42
        $model->setCodeRegion(ArrayHelper::get($response, "codeRegion"));
43
        $model->setCodesPostaux(ArrayHelper::get($response, "codesPostaux", []));
44
        $model->setPopulation(ArrayHelper::get($response, "population"));
45
        $model->setScore(ArrayHelper::get($response, "_score"));
46
47
        return $model;
48
    }
49
50
    /**
51
     * Deserializes a communes response.
52
     *
53
     * @param string $rawResponse The raw response.
54
     * @return CommunesResponse Returns the communes response.
55
     */
56
    public static function deserializeCommunesResponse($rawResponse) {
57
58
        $model = new CommunesResponse();
59
        $model->setRawResponse($rawResponse);
60
61
        $response = json_decode($rawResponse, true);
62
        if (null === $response) {
63
            return $model;
64
        }
65
66
        foreach ($response as $current) {
67
            $model->addCommune(static::deserializeCommune($current));
68
        }
69
70
        return $model;
71
    }
72
73
    /**
74
     * Deserializes a département.
75
     *
76
     * @param array $response The response.
77
     * @return Departement Returns the département.
78
     */
79
    protected static function deserializeDepartement(array $response) {
80
81
        $model = new Departement();
82
        $model->setNom(ArrayHelper::get($response, "nom"));
83
        $model->setCode(ArrayHelper::get($response, "code"));
84
        $model->setCodeRegion(ArrayHelper::get($response, "codeRegion"));
85
        $model->setScore(ArrayHelper::get($response, "_score"));
86
87
        return $model;
88
    }
89
90
    /**
91
     * Deserializes a départements response.
92
     *
93
     * @param string $rawResponse The raw response.
94
     * @return DepartementsResponse Returns the départements response.
95
     */
96
    public static function deserializeDepartementsResponse($rawResponse) {
97
98
        $model = new DepartementsResponse();
99
        $model->setRawResponse($rawResponse);
100
101
        $response = json_decode($rawResponse, true);
102
        if (null === $response) {
103
            return $model;
104
        }
105
106
        foreach ($response as $current) {
107
            $model->addDepartement(static::deserializeDepartement($current));
108
        }
109
110
        return $model;
111
    }
112
113
    /**
114
     * Deserializes a région.
115
     *
116
     * @param array $response The response.
117
     * @return Region Returns the région.
118
     */
119
    protected static function deserializeRegion(array $response) {
120
121
        $model = new Region();
122
        $model->setCode(ArrayHelper::get($response, "code"));
123
        $model->setNom(ArrayHelper::get($response, "nom"));
124
        $model->setScore(ArrayHelper::get($response, "_score"));
125
126
        return $model;
127
    }
128
129
    /**
130
     * Deserializes a régions response.
131
     *
132
     * @param string $rawResponse The raw response.
133
     * @return RegionsResponse Returns the régions response.
134
     */
135
    public static function deserializeRegionsResponse($rawResponse) {
136
137
        $model = new RegionsResponse();
138
        $model->setRawResponse($rawResponse);
139
140
        $response = json_decode($rawResponse, true);
141
        if (null === $response) {
142
            return $model;
143
        }
144
145
        foreach ($response as $current) {
146
            $model->addRegion(static::deserializeRegion($current));
147
        }
148
149
        return $model;
150
    }
151
}