Completed
Push — master ( 407357...7ade0b )
by WEBEWEB
01:13
created

ResponseDeserializer::deserializePhoto()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

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