Completed
Push — master ( dccc7f...4ad075 )
by Vladimir
03:52
created

Driver::getHeader()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 2
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace FondBot\Drivers;
6
7
use FondBot\Helpers\Arr;
8
use FondBot\Http\InteractsWithRequest;
9
use FondBot\Queue\SerializableForQueue;
10
use Psr\Http\Message\ServerRequestInterface;
11
use FondBot\Drivers\Exceptions\InvalidRequest;
12
13
abstract class Driver implements SerializableForQueue
14
{
15
    use InteractsWithRequest;
16
17
    /** @var array */
18
    protected $parameters;
19
20
    /**
21
     * Set driver data.
22
     *
23
     * @param array                  $parameters
24
     * @param ServerRequestInterface $request
25
     */
26 3
    public function fill(array $parameters, ServerRequestInterface $request): void
27
    {
28 3
        $this->parameters = $parameters;
29 3
        $this->request = $request;
30 3
    }
31
32
    /**
33
     * Get parameter value.
34
     *
35
     * @param string $name
36
     * @param null   $default
37
     *
38
     * @return mixed
39
     */
40 1
    public function getParameter(string $name, $default = null)
41
    {
42 1
        return Arr::get($this->parameters, $name, $default);
43
    }
44
45
    /**
46
     * Verify incoming request data.
47
     *
48
     * @throws InvalidRequest
49
     */
50
    abstract public function verifyRequest(): void;
51
52
    /**
53
     * Get current chat.
54
     *
55
     * @return Chat
56
     */
57
    abstract public function getChat(): Chat;
58
59
    /**
60
     * Get current user.
61
     *
62
     * @return User
63
     */
64
    abstract public function getUser(): User;
65
66
    /**
67
     * Get message received from sender.
68
     *
69
     * @return ReceivedMessage
70
     */
71
    abstract public function getMessage(): ReceivedMessage;
72
73
    /**
74
     * Handle command.
75
     *
76
     * @param Command $command
77
     */
78
    abstract public function handle(Command $command): void;
79
}
80