ResponseDeserializer::deserializePhotoResponse()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 14
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 2
1
<?php
2
3
/*
4
 * This file is part of the pexels-library package.
5
 *
6
 * (c) 2019 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\Pexels\Serializer;
13
14
use WBW\Library\Pexels\Response\CollectionResponse;
15
use WBW\Library\Pexels\Response\CollectionsResponse;
16
use WBW\Library\Pexels\Response\PhotoResponse;
17
use WBW\Library\Pexels\Response\PhotosResponse;
18
use WBW\Library\Pexels\Response\VideoResponse;
19
use WBW\Library\Pexels\Response\VideosResponse;
20
use WBW\Library\Types\Helper\ArrayHelper;
21
22
/**
23
 * Response deserializer.
24
 *
25
 * @author webeweb <https://github.com/webeweb>
26
 * @package WBW\Library\Pexels\Serializer
27
 */
28
class ResponseDeserializer {
29
30
    /**
31
     * Deserialize a collection response.
32
     *
33
     * @param string $rawResponse The raw response.
34
     * @return CollectionResponse Returns the collection response.
35
     */
36
    public static function deserializeCollectionResponse(string $rawResponse): CollectionResponse {
37
38
        $data = json_decode(trim($rawResponse), true);
39
40 15
        $model = new CollectionResponse();
41
        $model->setRawResponse($rawResponse);
42 15
43 15
        if (null === $data) {
44 15
            return $model;
45 15
        }
46 15
47 15
        foreach (ArrayHelper::get($data, "media", []) as $current) {
48 15
49 15
            $type = ArrayHelper::get($current, "type");
50 15
            if ("Photo" === $type) {
51
                $model->addMedia(JsonDeserializer::deserializePhoto($current));
52 15
            }
53
            if ("Video" === $type) {
54
                $model->addMedia(JsonDeserializer::deserializeVideo($current));
55
            }
56
        }
57
58
        $model->setPage(intval(ArrayHelper::get($data, "page", -1)));
59
        $model->setPerPage(intval(ArrayHelper::get($data, "per_page", -1)));
60
        $model->setTotalResults(intval(ArrayHelper::get($data, "total_results", -1)));
61 10
        $model->setNextPage(ArrayHelper::get($data, "next_page"));
62
        $model->setPrevPage(ArrayHelper::get($data, "prev_page"));
63 10
64
        return $model;
65 10
    }
66 10
67
    /**
68 10
     * Deserialize a collections response.
69 5
     *
70
     * @param string $rawResponse The raw response.
71
     * @return CollectionsResponse Returns the collections response.
72 5
     */
73
    public static function deserializeCollectionsResponse(string $rawResponse): CollectionsResponse {
74 5
75
        $data = json_decode(trim($rawResponse), true);
76
77
        $model = new CollectionsResponse();
78
        $model->setRawResponse($rawResponse);
79
80
        if (null === $data) {
81
            return $model;
82
        }
83 10
84
        foreach (ArrayHelper::get($data, "collections", []) as $current) {
85 10
            $model->addCollection(JsonDeserializer::deserializeCollection($current));
86
        }
87 10
88 10
        $model->setPage(intval(ArrayHelper::get($data, "page", -1)));
89
        $model->setPerPage(intval(ArrayHelper::get($data, "per_page", -1)));
90 10
        $model->setTotalResults(intval(ArrayHelper::get($data, "total_results", -1)));
91 5
        $model->setNextPage(ArrayHelper::get($data, "next_page"));
92
        $model->setPrevPage(ArrayHelper::get($data, "prev_page"));
93
94 5
        return $model;
95 5
    }
96 5
97 5
    /**
98 5
     * Deserialize a photo response.
99 5
     *
100
     * @param string $rawResponse The raw response.
101 5
     * @return PhotoResponse Returns the photo response.
102 5
     */
103
    public static function deserializePhotoResponse(string $rawResponse): PhotoResponse {
104
105 5
        $data = json_decode(trim($rawResponse), true);
106
107
        $model = new PhotoResponse();
108
        $model->setRawResponse($rawResponse);
109
110
        if (null === $data) {
111
            return $model;
112
        }
113
114 20
        $model->setPhoto(JsonDeserializer::deserializePhoto($data));
115
116 20
        return $model;
117 20
    }
118 20
119 20
    /**
120 20
     * Deserialize a photos response.
121 20
     *
122 20
     * @param string $rawResponse The raw response.
123 20
     * @return PhotosResponse Returns the photos response.
124 20
     */
125
    public static function deserializePhotosResponse(string $rawResponse): PhotosResponse {
126 20
127
        $data = json_decode(trim($rawResponse), true);
128
129
        $model = new PhotosResponse();
130
        $model->setRawResponse($rawResponse);
131
132
        if (null === $data) {
133
            return $model;
134
        }
135 20
136
        $model->setTotalResults(intval(ArrayHelper::get($data, "total_results", -1)));
137 20
        $model->setPage(intval(ArrayHelper::get($data, "page", -1)));
138 20
        $model->setPerPage(intval(ArrayHelper::get($data, "per_page", -1)));
139 20
        $model->setUrl(ArrayHelper::get($data, "url"));
140 20
        $model->setPrevPage(ArrayHelper::get($data, "prev_page"));
141
        $model->setNextPage(ArrayHelper::get($data, "next_page"));
142 20
143
        foreach (ArrayHelper::get($data, "photos", []) as $current) {
144
            $model->addPhoto(JsonDeserializer::deserializePhoto($current));
145
        }
146
147
        return $model;
148
    }
149
150
    /**
151 15
     * Deserialize a video response.
152
     *
153 15
     * @param string $rawResponse The raw response.
154 15
     * @return VideoResponse Returns the video response.
155 15
     */
156 15
    public static function deserializeVideoResponse(string $rawResponse): VideoResponse {
157 15
158 15
        $data = json_decode(trim($rawResponse), true);
159 15
160 15
        $model = new VideoResponse();
161 15
        $model->setRawResponse($rawResponse);
162
163 15
        if (null === $data) {
164 15
            return $model;
165
        }
166
167 15
        $model->setVideo(JsonDeserializer::deserializeVideo($data));
168 15
169
        return $model;
170
    }
171 15
172
    /**
173
     * Deserialize a videos response.
174
     *
175
     * @param string $rawResponse The raw response.
176
     * @return VideosResponse Returns the photos response.
177
     */
178
    public static function deserializeVideosResponse(string $rawResponse): VideosResponse {
179
180 20
        $data = json_decode(trim($rawResponse), true);
181
182 20
        $model = new VideosResponse();
183 20
        $model->setRawResponse($rawResponse);
184 20
185 20
        if (null === $data) {
186 20
            return $model;
187 20
        }
188 20
189
        $model->setTotalResults(intval(ArrayHelper::get($data, "total_results", -1)));
190 20
        $model->setPage(intval(ArrayHelper::get($data, "page", -1)));
191
        $model->setPerPage(intval(ArrayHelper::get($data, "per_page", -1)));
192
        $model->setUrl(ArrayHelper::get($data, "url"));
193
        $model->setPrevPage(ArrayHelper::get($data, "prev_page"));
194
        $model->setNextPage(ArrayHelper::get($data, "next_page"));
195
196
        foreach (ArrayHelper::get($data, "videos", []) as $current) {
197
            $model->addVideo(JsonDeserializer::deserializeVideo($current));
198
        }
199 20
200
        return $model;
201 20
    }
202
}
203