JsonDeserializer::deserializeVideo()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 22
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
eloc 15
dl 0
loc 22
rs 9.7666
c 2
b 0
f 1
cc 3
nc 4
nop 1
1
<?php
2
3
/*
4
 * This file is part of the pexels-library package.
5
 *
6
 * (c) 2021 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\Model\Collection;
15
use WBW\Library\Pexels\Model\Photo;
16
use WBW\Library\Pexels\Model\Source;
17
use WBW\Library\Pexels\Model\User;
18
use WBW\Library\Pexels\Model\Video;
19
use WBW\Library\Pexels\Model\VideoFile;
20
use WBW\Library\Pexels\Model\VideoPicture;
21
use WBW\Library\Types\Helper\ArrayHelper;
22
23
/**
24
 * JSON deserializer.
25
 *
26
 * @author webeweb <https://github.com/webeweb>
27
 * @package WBW\Library\Pexels\Serializer
28
 */
29
class JsonDeserializer {
30
31
    /**
32
     * Deserialize a collection.
33
     *
34
     * @param array<string,mixed> $data The data.
35
     * @return Collection Returns a collection.
36
     */
37
    public static function deserializeCollection(array $data): Collection {
38
39
        $model = new Collection();
40
        $model->setRawData(json_encode($data, JSON_PRETTY_PRINT));
41
        $model->setId(ArrayHelper::get($data, "id"));
42
        $model->setTitle(ArrayHelper::get($data, "title"));
43
        $model->setDescription(ArrayHelper::get($data, "description"));
44
        $model->setPrivate(ArrayHelper::get($data, "private"));
45
        $model->setMediaCount(ArrayHelper::get($data, "media_count"));
46
        $model->setPhotosCount(ArrayHelper::get($data, "photos_count"));
47
        $model->setVideosCount(ArrayHelper::get($data, "videos_count"));
48
49
        return $model;
50
    }
51
52
    /**
53
     * Deserialize a photo.
54
     *
55
     * @param array<string,mixed> $data The data.
56
     * @return Photo Returns a photo.
57
     */
58
    public static function deserializePhoto(array $data): Photo {
59
60
        $model = new Photo();
61
        $model->setRawData(json_encode($data, JSON_PRETTY_PRINT));
62
        $model->setId(ArrayHelper::get($data, "id"));
63
        $model->setWidth(ArrayHelper::get($data, "width"));
64
        $model->setHeight(ArrayHelper::get($data, "height"));
65
        $model->setUrl(ArrayHelper::get($data, "url"));
66
        $model->setPhotographer(ArrayHelper::get($data, "photographer"));
67
        $model->setPhotographerUrl(ArrayHelper::get($data, "photographer_url"));
68
        $model->setPhotographerId(ArrayHelper::get($data, "photographer_id"));
69
        $model->setAvgColor(ArrayHelper::get($data, "avg_color"));
70
        $model->setSrc(static::deserializeSource(ArrayHelper::get($data, "src", [])));
71
        $model->setLiked(ArrayHelper::get($data, "liked"));
72
        $model->setAlt(ArrayHelper::get($data, "alt"));
73
74
        return $model;
75
    }
76
77
    /**
78
     * Deserialize a source.
79
     *
80
     * @param array<string,mixed> $data The data.
81
     * @return Source Returns a source.
82
     */
83
    public static function deserializeSource(array $data): Source {
84
85
        $model = new Source();
86
        $model->setRawData(json_encode($data, JSON_PRETTY_PRINT));
87
        $model->setOriginal(ArrayHelper::get($data, "original"));
88
        $model->setLarge2x(ArrayHelper::get($data, "large2x"));
89
        $model->setLarge(ArrayHelper::get($data, "large"));
90
        $model->setMedium(ArrayHelper::get($data, "medium"));
91
        $model->setSmall(ArrayHelper::get($data, "small"));
92
        $model->setPortrait(ArrayHelper::get($data, "portrait"));
93
        $model->setLandscape(ArrayHelper::get($data, "landscape"));
94
        $model->setTiny(ArrayHelper::get($data, "tiny"));
95
96
        return $model;
97
    }
98
99
    /**
100
     * Deserialize an user.
101
     *
102
     * @param array<string,mixed> $data The data.
103
     * @return User Returns an user.
104
     */
105
    public static function deserializeUser(array $data): User {
106
107
        $model = new User();
108
        $model->setRawData(json_encode($data, JSON_PRETTY_PRINT));
109
        $model->setId(ArrayHelper::get($data, "id"));
110
        $model->setName(ArrayHelper::get($data, "name"));
111
        $model->setUrl(ArrayHelper::get($data, "url"));
112
113
        return $model;
114
    }
115
116
    /**
117
     * Deserialize a video.
118
     *
119
     * @param array<string,mixed> $data The data.
120
     * @return Video Returns a video.
121
     */
122
    public static function deserializeVideo(array $data): Video {
123
124
        $model = new Video();
125
        $model->setRawData(json_encode($data, JSON_PRETTY_PRINT));
126
        $model->setId(ArrayHelper::get($data, "id"));
127
        $model->setWidth(ArrayHelper::get($data, "width"));
128
        $model->setHeight(ArrayHelper::get($data, "height"));
129
        $model->setUrl(ArrayHelper::get($data, "url"));
130
        $model->setImage(ArrayHelper::get($data, "image"));
131
        $model->setFullRes(ArrayHelper::get($data, "full_res"));
132
        $model->setDuration(ArrayHelper::get($data, "duration"));
133
        $model->setUser(static::deserializeUser(ArrayHelper::get($data, "user", [])));
134
135
        foreach (ArrayHelper::get($data, "video_files", []) as $current) {
136
            $model->addVideoFile(static::deserializeVideoFile($current));
137
        }
138
139
        foreach (ArrayHelper::get($data, "video_pictures", []) as $current) {
140
            $model->addVideoPicture(static::deserializeVideoPicture($current));
141
        }
142
143
        return $model;
144
    }
145
146
    /**
147
     * Deserialize a video file.
148
     *
149
     * @param array<string,mixed> $data The data.
150
     * @return VideoFile Returns a video file.
151
     */
152
    public static function deserializeVideoFile(array $data): VideoFile {
153
154
        $model = new VideoFile();
155
        $model->setRawData(json_encode($data, JSON_PRETTY_PRINT));
156
        $model->setId(ArrayHelper::get($data, "id"));
157
        $model->setQuality(ArrayHelper::get($data, "quality"));
158
        $model->setFileType(ArrayHelper::get($data, "file_type"));
159
        $model->setWidth(ArrayHelper::get($data, "width"));
160
        $model->setHeight(ArrayHelper::get($data, "height"));
161
        $model->setLink(ArrayHelper::get($data, "link"));
162
163
        return $model;
164
    }
165
166
    /**
167
     * Deserialize a video picture.
168
     *
169
     * @param array<string,mixed> $data The data.
170
     * @return VideoPicture Returns a video picture.
171
     */
172
    public static function deserializeVideoPicture(array $data): VideoPicture {
173
174
        $model = new VideoPicture();
175
        $model->setRawData(json_encode($data, JSON_PRETTY_PRINT));
176
        $model->setId(ArrayHelper::get($data, "id"));
177
        $model->setPicture(ArrayHelper::get($data, "picture"));
178
        $model->setNr(ArrayHelper::get($data, "nr"));
179
180
        return $model;
181
    }
182
183
}
184