RequestSerializer::serializeSearchPhotosRequest()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 17
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 11
c 0
b 0
f 0
dl 0
loc 17
rs 9.9
ccs 3
cts 3
cp 1
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 InvalidArgumentException;
15
use WBW\Library\Pexels\Api\RequestInterface;
16
use WBW\Library\Pexels\Request\CollectionRequest;
17
use WBW\Library\Pexels\Request\CollectionsRequest;
18
use WBW\Library\Pexels\Request\CuratedPhotosRequest;
19
use WBW\Library\Pexels\Request\PopularVideosRequest;
20
use WBW\Library\Pexels\Request\SearchPhotosRequest;
21
use WBW\Library\Pexels\Request\SearchVideosRequest;
22
use WBW\Library\Types\Helper\ArrayHelper;
23
24
/**
25
 * Request serializer.
26
 *
27
 * @author webeweb <https://github.com/webeweb>
28
 * @package WBW\Library\Pexels\Serializer
29
 */
30
class RequestSerializer {
31
32
    /**
33
     * Serialize a collection request.
34
     *
35 15
     * @param CollectionRequest $request The collection request.
36
     * @return array<string,mixed> Returns the serialized curated photos request.
37 15
     */
38
    public static function serializeCollectionRequest(CollectionRequest $request): array {
39 15
40 15
        $result = [];
41
42 15
        ArrayHelper::set($result, "type", $request->getType(), [null]);
43
        ArrayHelper::set($result, "page", $request->getPage(), [null, 1]);
44
        ArrayHelper::set($result, "per_page", $request->getPerPage(), [null, RequestInterface::PER_PAGE_DEFAULT]);
45
46
        return $result;
47
    }
48
49
    /**
50
     * Serialize a collections request.
51 10
     *
52
     * @param CollectionsRequest $request The collections request.
53 10
     * @return array<string,mixed> Returns the serialized curated photos request.
54
     */
55 10
    public static function serializeCollectionsRequest(CollectionsRequest $request): array {
56 10
57 10
        $result = [];
58 10
59 10
        ArrayHelper::set($result, "page", $request->getPage(), [null, 1]);
60 10
        ArrayHelper::set($result, "per_page", $request->getPerPage(), [null, RequestInterface::PER_PAGE_DEFAULT]);
61
62 10
        return $result;
63
    }
64
65
    /**
66
     * Serialize a curated photos request.
67
     *
68
     * @param CuratedPhotosRequest $request The curated photos request.
69
     * @return array<string,mixed> Returns the serialized curated photos request.
70
     */
71
    public static function serializeCuratedPhotosRequest(CuratedPhotosRequest $request): array {
72 25
73
        $result = [];
74 25
75
        ArrayHelper::set($result, "page", $request->getPage(), [null, 1]);
76 25
        ArrayHelper::set($result, "per_page", $request->getPerPage(), [null, RequestInterface::PER_PAGE_DEFAULT]);
77 5
78
        return $result;
79
    }
80 20
81 20
    /**
82 20
     * Serialize a popular videos request.
83 20
     *
84
     * @param PopularVideosRequest $request The popular photos request.
85 20
     * @return array<string,mixed> Returns the serialized popular videos request.
86
     */
87
    public static function serializePopularVideosRequest(PopularVideosRequest $request): array {
88
89
        $result = [];
90
91
        ArrayHelper::set($result, "min_width", $request->getMinWidth(), [null]);
92
        ArrayHelper::set($result, "min_height", $request->getMinHeight(), [null]);
93
        ArrayHelper::set($result, "min_duration", $request->getMinDuration(), [null]);
94
        ArrayHelper::set($result, "max_duration", $request->getMaxDuration(), [null]);
95 25
        ArrayHelper::set($result, "page", $request->getPage(), [null, 1]);
96
        ArrayHelper::set($result, "per_page", $request->getPerPage(), [null, RequestInterface::PER_PAGE_DEFAULT]);
97 25
98
        return $result;
99 25
    }
100 5
101
    /**
102
     * Serialize a search photos request.
103 20
     *
104 20
     * @param SearchPhotosRequest $request The search photos request.
105 20
     * @return array<string,mixed> Returns the serialized search photos request.
106 20
     * @throws InvalidArgumentException Throws an invalid argument exception if a mandatory parameter is missing.
107 20
     */
108 20
    public static function serializeSearchPhotosRequest(SearchPhotosRequest $request): array {
109 20
110
        $result = [];
111 20
112
        if (null === $request->getQuery()) {
113
            throw new InvalidArgumentException('The mandatory parameter "query" is missing');
114
        }
115
116
        ArrayHelper::set($result, "query", $request->getQuery());
117
        ArrayHelper::set($result, "orientation", $request->getOrientation(), [null]);
118
        ArrayHelper::set($result, "size", $request->getSize(), [null]);
119
        ArrayHelper::set($result, "color", $request->getColor(), [null]);
120
        ArrayHelper::set($result, "locale", $request->getLocale());
121
        ArrayHelper::set($result, "page", $request->getPage(), [null, 1]);
122
        ArrayHelper::set($result, "per_page", $request->getPerPage(), [null, RequestInterface::PER_PAGE_DEFAULT]);
123
124
        return $result;
125
    }
126
127
    /**
128
     * Serialize a search videos request.
129
     *
130
     * @param SearchVideosRequest $request The search photos request.
131
     * @return array<string,mixed> Returns the serialized search videos request.
132
     * @throws InvalidArgumentException Throws an invalid argument exception if a mandatory parameter is missing.
133
     */
134
    public static function serializeSearchVideosRequest(SearchVideosRequest $request): array {
135
136
        $result = [];
137
138
        if (null === $request->getQuery()) {
139
            throw new InvalidArgumentException('The mandatory parameter "query" is missing');
140
        }
141
142
        ArrayHelper::set($result, "query", $request->getQuery());
143
        ArrayHelper::set($result, "orientation", $request->getOrientation(), [null]);
144
        ArrayHelper::set($result, "size", $request->getSize(), [null]);
145
        ArrayHelper::set($result, "locale", $request->getLocale(), [null]);
146
        ArrayHelper::set($result, "page", $request->getPage(), [null, 1]);
147
        ArrayHelper::set($result, "per_page", $request->getPerPage(), [null, RequestInterface::PER_PAGE_DEFAULT]);
148
149
        return $result;
150
    }
151
}
152