Completed
Push — master ( 479fbe...e1e56a )
by WEBEWEB
01:15
created

ResponseDeserializer::deserializeUser()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
cc 1
nc 1
nop 1
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\Core\Argument\Helper\ArrayHelper;
15
use WBW\Library\Pexels\Model\Photo;
16
use WBW\Library\Pexels\Model\Response\PhotoResponse;
17
use WBW\Library\Pexels\Model\Response\PhotosResponse;
18
use WBW\Library\Pexels\Model\Response\VideoResponse;
19
use WBW\Library\Pexels\Model\Response\VideosResponse;
20
use WBW\Library\Pexels\Model\Source;
21
use WBW\Library\Pexels\Model\User;
22
use WBW\Library\Pexels\Model\Video;
23
use WBW\Library\Pexels\Model\VideoFile;
24
use WBW\Library\Pexels\Model\VideoPicture;
25
26
/**
27
 * Response deserializer.
28
 *
29
 * @author webeweb <https://github.com/webeweb/>
30
 * @package WBW\Library\Pexels\Serializer
31
 */
32
class ResponseDeserializer {
33
34
    /**
35
     * Deserialize a photo.
36
     *
37
     * @param array $response The response.
38
     * @return Photo Returns a photo.
39
     */
40
    protected static function deserializePhoto(array $response) {
41
42
        $model = new Photo();
43
        $model->setId(intval(ArrayHelper::get($response, "id", -1)));
44
        $model->setWidth(intval(ArrayHelper::get($response, "width", -1)));
45
        $model->setHeight(intval(ArrayHelper::get($response, "height", -1)));
46
        $model->setUrl(ArrayHelper::get($response, "url", null));
47
        $model->setPhotographer(ArrayHelper::get($response, "photographer", null));
48
        $model->setPhotographerId(ArrayHelper::get($response, "photographer_id", null));
49
        $model->setPhotographerUrl(ArrayHelper::get($response, "photographer_url", null));
50
        $model->setSrc(static::deserializeSource(ArrayHelper::get($response, "src", [])));
51
52
        return $model;
53
    }
54
55
    /**
56
     * Deserialize a photo response.
57
     *
58
     * @param string $rawResponse The raw response.
59
     * @return PhotoResponse Returns the photo response.
60
     */
61
    public static function deserializePhotoResponse($rawResponse) {
62
63
        $decodedResponse = json_decode(trim($rawResponse), true);
64
65
        $model = new PhotoResponse();
66
        $model->setRawResponse($rawResponse);
67
68
        if (null === $decodedResponse) {
69
            return $model;
70
        }
71
72
        $model->setPhoto(static::deserializePhoto($decodedResponse));
73
74
        return $model;
75
    }
76
77
    /**
78
     * Deserialize a photos response.
79
     *
80
     * @param string $rawResponse The raw response.
81
     * @return PhotosResponse Returns the photos response.
82
     */
83
    public static function deserializePhotosResponse($rawResponse) {
84
85
        $decodedResponse = json_decode(trim($rawResponse), true);
86
87
        $model = new PhotosResponse();
88
        $model->setRawResponse($rawResponse);
89
90
        if (null === $decodedResponse) {
91
            return $model;
92
        }
93
94
        $model->setTotalResults(intval(ArrayHelper::get($decodedResponse, "total_results", -1)));
95
        $model->setPage(intval(ArrayHelper::get($decodedResponse, "page", -1)));
96
        $model->setPerPage(intval(ArrayHelper::get($decodedResponse, "per_page", -1)));
97
        $model->setUrl(ArrayHelper::get($decodedResponse, "url", null));
98
        $model->setPrevPage(ArrayHelper::get($decodedResponse, "prev_page", null));
99
        $model->setNextPage(ArrayHelper::get($decodedResponse, "next_page", null));
100
101
        foreach (ArrayHelper::get($decodedResponse, "photos", []) as $current) {
102
            $model->addPhoto(static::deserializePhoto($current));
103
        }
104
105
        return $model;
106
    }
107
108
    /**
109
     * Deserialize a source.
110
     *
111
     * @param array $response The response.
112
     * @return Source Returns a source.
113
     */
114
    protected static function deserializeSource(array $response) {
115
116
        $model = new Source();
117
        $model->setOriginal(ArrayHelper::get($response, "original", null));
118
        $model->setLarge(ArrayHelper::get($response, "large", null));
119
        $model->setLarge2x(ArrayHelper::get($response, "large2x", null));
120
        $model->setMedium(ArrayHelper::get($response, "medium", null));
121
        $model->setSmall(ArrayHelper::get($response, "small", null));
122
        $model->setPortrait(ArrayHelper::get($response, "portrait", null));
123
        $model->setLandscape(ArrayHelper::get($response, "landscape", null));
124
        $model->setTiny(ArrayHelper::get($response, "tiny", null));
125
126
        return $model;
127
    }
128
129
    /**
130
     * Deserialize an user.
131
     *
132
     * @param array $response The response.
133
     * @return User Returns an user.
134
     */
135
    protected static function deserializeUser(array $response) {
136
137
        $model = new User();
138
        $model->setId(intval(ArrayHelper::get($response, "id", -1)));
139
        $model->setName(ArrayHelper::get($response, "name", null));
140
        $model->setUrl(ArrayHelper::get($response, "url", null));
141
142
        return $model;
143
    }
144
145
    /**
146
     * Deserialize a video.
147
     *
148
     * @param array $response The response.
149
     * @return Video Returns a video.
150
     */
151
    protected static function deserializeVideo(array $response) {
152
153
        $model = new Video();
154
        $model->setId(intval(ArrayHelper::get($response, "id", -1)));
155
        $model->setWidth(intval(ArrayHelper::get($response, "width", -1)));
156
        $model->setHeight(intval(ArrayHelper::get($response, "height", -1)));
157
        $model->setUrl(ArrayHelper::get($response, "url", null));
158
        $model->setImage(ArrayHelper::get($response, "image", null));
159
        $model->setFullRes(ArrayHelper::get($response, "full_res", null));
160
        $model->setDuration(intval(ArrayHelper::get($response, "duration", -1)));
161
        $model->setUser(static::deserializeUser(ArrayHelper::get($response, "user", [])));
162
163
        foreach (ArrayHelper::get($response, "video_files", []) as $current) {
164
            $model->addVideoFile(static::deserializeVideoFile($current));
165
        }
166
167
        foreach (ArrayHelper::get($response, "video_pictures", []) as $current) {
168
            $model->addVideoPicture(static::deserializeVideoPicture($current));
169
        }
170
171
        return $model;
172
    }
173
174
    /**
175
     * Deserialize a video file.
176
     *
177
     * @param array $response The response.
178
     * @return VideoFile Returns a video file.
179
     */
180
    protected static function deserializeVideoFile(array $response) {
181
182
        $model = new VideoFile();
183
        $model->setId(intval(ArrayHelper::get($response, "id", -1)));
184
        $model->setQuality(ArrayHelper::get($response, "quality", null));
185
        $model->setFileType(ArrayHelper::get($response, "file_type", null));
186
        $model->setWidth(intval(ArrayHelper::get($response, "width", -1)));
187
        $model->setHeight(intval(ArrayHelper::get($response, "height", -1)));
188
        $model->setLink(ArrayHelper::get($response, "link", null));
189
190
        return $model;
191
    }
192
193
    /**
194
     * Deserialize a video picture.
195
     *
196
     * @param array $response The response.
197
     * @return VideoPicture Returns a video picture.
198
     */
199
    protected static function deserializeVideoPicture(array $response) {
200
201
        $model = new VideoPicture();
202
        $model->setId(intval(ArrayHelper::get($response, "id", -1)));
203
        $model->setPicture(ArrayHelper::get($response, "picture", null));
204
        $model->setNr(intval(ArrayHelper::get($response, "nr", -1)));
205
206
        return $model;
207
    }
208
209
    /**
210
     * Deserialize a video response.
211
     *
212
     * @param string $rawResponse The raw response.
213
     * @return VideoResponse Returns the video response.
214
     */
215
    public static function deserializeVideoResponse($rawResponse) {
216
217
        $decodedResponse = json_decode(trim($rawResponse), true);
218
219
        $model = new VideoResponse();
220
        $model->setRawResponse($rawResponse);
221
222
        if (null === $decodedResponse) {
223
            return $model;
224
        }
225
226
        $model->setVideo(static::deserializeVideo($decodedResponse));
227
228
        return $model;
229
    }
230
231
    /**
232
     * Deserialize a videos response.
233
     *
234
     * @param string $rawResponse The raw response.
235
     * @return VideosResponse Returns the photos response.
236
     */
237
    public static function deserializeVideosResponse($rawResponse) {
238
239
        $decodedResponse = json_decode(trim($rawResponse), true);
240
241
        $model = new VideosResponse();
242
        $model->setRawResponse($rawResponse);
243
244
        if (null === $decodedResponse) {
245
            return $model;
246
        }
247
248
        $model->setTotalResults(intval(ArrayHelper::get($decodedResponse, "total_results", -1)));
249
        $model->setPage(intval(ArrayHelper::get($decodedResponse, "page", -1)));
250
        $model->setPerPage(intval(ArrayHelper::get($decodedResponse, "per_page", -1)));
251
        $model->setUrl(ArrayHelper::get($decodedResponse, "url", null));
252
        $model->setPrevPage(ArrayHelper::get($decodedResponse, "prev_page", null));
253
        $model->setNextPage(ArrayHelper::get($decodedResponse, "next_page", null));
254
255
        foreach (ArrayHelper::get($decodedResponse, "videos", []) as $current) {
256
            $model->addVideo(static::deserializeVideo($current));
257
        }
258
259
        return $model;
260
    }
261
}
262