Passed
Push — master ( b96745...070aaa )
by Irfaq
14:12
created

ParamBuilder::wrap()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 7
rs 10
c 0
b 0
f 0
cc 3
nc 3
nop 1
1
<?php
2
3
namespace Transmission\HttpClient\Message;
4
5
/**
6
 * ParamBuilder
7
 */
8
final class ParamBuilder
9
{
10
    /**
11
     * Sanitize and build params.
12
     *
13
     * @param array $params
14
     *
15
     * @return string
16
     */
17
    public static function build($params)
18
    {
19
        return collect($params)
20
            ->reject(function ($value) {
21
                return blank($value);
22
            })->transform(function ($value) {
23
                if (is_object($value)) {
24
                    return $value->toArray();
25
                } elseif (is_array($value)) {
26
                    return static::build($value);
27
                } elseif (is_numeric($value)) {
28
                    return $value + 0;
29
                } elseif (is_bool($value)) {
30
                    return (int)$value;
31
                } elseif (is_string($value)) { // Encode if it's not UTF-8
32
                    if (mb_detect_encoding($value, 'auto') !== 'UTF-8') {
33
                        return mb_convert_encoding($value, 'UTF-8');
34
                    }
35
                }
36
37
                return $value;
38
            })->toArray();
39
    }
40
}
41