Completed
Push — master ( 074db3...cddf10 )
by Vladimir
02:59
created

Request   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 3

Test Coverage

Coverage 94.74%

Importance

Changes 0
Metric Value
dl 0
loc 80
ccs 18
cts 19
cp 0.9474
rs 10
c 0
b 0
f 0
wmc 8
lcom 2
cbo 3

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A fromMessage() 0 10 2
A getParameters() 0 4 1
A getParameter() 0 4 1
A hasParameters() 0 4 1
A getHeaders() 0 4 1
A getHeader() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace FondBot\Http;
6
7
use FondBot\Helpers\Arr;
8
use Zend\Diactoros\ServerRequest;
9
use Psr\Http\Message\MessageInterface;
10
11
class Request
12
{
13
    private $parameters;
14
    private $headers;
15
16 3
    public function __construct(array $parameters, array $headers)
17
    {
18 3
        $this->parameters = $parameters;
19 3
        $this->headers = $headers;
20 3
    }
21
22 2
    public static function fromMessage(MessageInterface $message): Request
23
    {
24 2
        if ($message instanceof ServerRequest) {
25
            $parameters = array_merge($message->getQueryParams(), $message->getParsedBody());
26
        } else {
27 2
            $parameters = (array) json_decode($message->getBody()->getContents(), true);
28
        }
29
30 2
        return new static($parameters, $message->getHeaders());
31
    }
32
33
    /**
34
     * Get request parameters.
35
     *
36
     * @return array
37
     */
38 1
    public function getParameters(): array
39
    {
40 1
        return $this->parameters;
41
    }
42
43
    /**
44
     * Get single parameter.
45
     *
46
     * @param string $key
47
     * @param mixed  $default
48
     *
49
     * @return mixed
50
     */
51 1
    public function getParameter(string $key, $default = null)
52
    {
53 1
        return Arr::get($this->parameters, $key, $default);
54
    }
55
56
    /**
57
     * Determine if request has one or more parameters.
58
     *
59
     * @param array|string $keys
60
     *
61
     * @return bool
62
     */
63 1
    public function hasParameters($keys): bool
64
    {
65 1
        return Arr::has($this->parameters, (array) $keys);
66
    }
67
68
    /**
69
     * Get request headers.
70
     *
71
     * @return array
72
     */
73 1
    public function getHeaders(): array
74
    {
75 1
        return $this->headers;
76
    }
77
78
    /**
79
     * Get single request header.
80
     *
81
     * @param string $key
82
     * @param mixed  $default
83
     *
84
     * @return mixed
85
     */
86 1
    public function getHeader(string $key, $default = null)
87
    {
88 1
        return Arr::get($this->headers, $key, $default);
89
    }
90
}
91