Completed
Push — develop ( 818c3c...ac5700 )
by Armando
03:27
created

ServerResponse::getDescription()   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
c 0
b 0
f 0
dl 0
loc 4
rs 10
ccs 2
cts 2
cp 1
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
/**
3
 * This file is part of the TelegramBot package.
4
 * (c) Avtandil Kikabidze aka LONGMAN <[email protected]>
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 */
8
9
namespace Longman\TelegramBot\Entities;
10
11
class ServerResponse extends Entity
12
{
13
    /**
14
     * @var bool
15
     */
16
    protected $ok;
17
18
    /**
19
     * @var null
20
     */
21
    protected $result;
22
23
    /**
24
     * @var null
25
     */
26
    protected $error_code;
27
28
    /**
29
     * @var null
30
     */
31
    protected $description;
32
33
    /**
34
     * ServerResponse constructor.
35
     *
36
     * @param array $data
37
     * @param       $bot_name
38
     *
39
     * @throws \Longman\TelegramBot\Exception\TelegramException
40
     */
41 14
    public function __construct(array $data, $bot_name)
42
    {
43 14
        if (isset($data['ok'], $data['result'])) {
44 12
            if (is_array($data['result'])) {
45 11
                if ($data['ok'] && !$this->isAssoc($data['result']) && !isset($data['result'][0]['user'])) {
46
                    //Get Update
47 2
                    foreach ($data['result'] as $update) {
48 2
                        $this->result[] = new Update($update, $bot_name);
49
                    }
50 9
                } elseif ($data['ok'] && !$this->isAssoc($data['result']) && isset($data['result'][0]['user'])) {
51
                    //Response from getChatAdministrators
52
                    $this->result = [];
0 ignored issues
show
Documentation Bug introduced by
It seems like array() of type array is incompatible with the declared type null of property $result.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
53
                    foreach ($data['result'] as $user) {
54
                        $this->result[] = new ChatMember($user);
55
                    }
56 9
                } elseif ($data['ok'] && $this->isAssoc($data['result'])) {
57 9
                    if (isset($data['result']['total_count'])) {
58
                        //Response from getUserProfilePhotos
59 1
                        $this->result = new UserProfilePhotos($data['result']);
0 ignored issues
show
Documentation Bug introduced by
It seems like new \Longman\TelegramBot...Photos($data['result']) of type object<Longman\TelegramB...ties\UserProfilePhotos> is incompatible with the declared type null of property $result.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
60 8
                    } elseif (isset($data['result']['file_id'])) {
61
                        //Response from getFile
62 1
                        $this->result = new File($data['result']);
0 ignored issues
show
Documentation Bug introduced by
It seems like new \Longman\TelegramBot...s\File($data['result']) of type object<Longman\TelegramBot\Entities\File> is incompatible with the declared type null of property $result.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
63 7
                    } elseif (isset($data['result']['username'])) {
64
                        //Response from getMe
65
                        $this->result = new User($data['result']);
0 ignored issues
show
Documentation Bug introduced by
It seems like new \Longman\TelegramBot...s\User($data['result']) of type object<Longman\TelegramBot\Entities\User> is incompatible with the declared type null of property $result.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
66 7
                    } elseif (isset($data['result']['id'])) {
67
                        //Response from getChat
68
                        $this->result = new Chat($data['result']);
0 ignored issues
show
Documentation Bug introduced by
It seems like new \Longman\TelegramBot...s\Chat($data['result']) of type object<Longman\TelegramBot\Entities\Chat> is incompatible with the declared type null of property $result.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
69 7
                    } elseif (isset($data['result']['user'])) {
70
                        //Response from getChatMember
71
                        $this->result = new ChatMember($data['result']);
0 ignored issues
show
Documentation Bug introduced by
It seems like new \Longman\TelegramBot...Member($data['result']) of type object<Longman\TelegramBot\Entities\ChatMember> is incompatible with the declared type null of property $result.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
72
                    } else {
73
                        //Response from sendMessage
74 7
                        $this->result = new Message($data['result'], $bot_name);
0 ignored issues
show
Documentation Bug introduced by
It seems like new \Longman\TelegramBot...a['result'], $bot_name) of type object<Longman\TelegramBot\Entities\Message> is incompatible with the declared type null of property $result.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
75
                    }
76
                }
77
78 11
                $this->ok          = $data['ok'];
79 11
                $this->error_code  = null;
80 11
                $this->description = null;
81
            } else {
82 2
                if ($data['ok'] && $data['result'] === true) {
83
                    //Response from setWebhook set
84 2
                    $this->ok          = $data['ok'];
85 2
                    $this->result      = true;
0 ignored issues
show
Documentation Bug introduced by
It seems like true of type boolean is incompatible with the declared type null of property $result.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
86 2
                    $this->error_code  = null;
87 2
                    $this->description = isset($data['description']) ? $data['description'] : '';
88
                } elseif (is_numeric($data['result'])) {
89
                    //Response from getChatMembersCount
90
                    $this->result = $data['result'];
0 ignored issues
show
Documentation Bug introduced by
It seems like $data['result'] of type integer or double or string is incompatible with the declared type null of property $result.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
91
                } else {
92
                    $this->ok          = false;
93
                    $this->result      = null;
94
                    $this->error_code  = $data['error_code'];
95 12
                    $this->description = $data['description'];
96
                }
97
            }
98
        } else {
99
            //webHook not set
100 2
            $this->ok          = false;
101 2
            $this->result      = isset($data['result']) ? $data['result'] : null;
102 2
            $this->error_code  = isset($data['error_code']) ? $data['error_code'] : null;
103 2
            $this->description = isset($data['description']) ? $data['description'] : null;
104
105
            //throw new TelegramException('ok(variable) is not set!');
106
        }
107 14
    }
108
109
    /**
110
     * Check if array is associative
111
     *
112
     * @param array $array
113
     * @return bool
114
     */
115 11
    protected function isAssoc(array $array)
116
    {
117 11
        return (bool) count(array_filter(array_keys($array), 'is_string'));
118
    }
119
120
    /**
121
     * If response is ok
122
     *
123
     * @return bool
124
     */
125 5
    public function isOk()
126
    {
127 5
        return $this->ok;
128
    }
129
130
    /**
131
     * Get result
132
     *
133
     * @return string
134
     */
135 14
    public function getResult()
136
    {
137 14
        return $this->result;
138
    }
139
140
    /**
141
     * Get error code
142
     *
143
     * @return string
144
     */
145 5
    public function getErrorCode()
146
    {
147 5
        return $this->error_code;
148
    }
149
150
    /**
151
     * Get description
152
     *
153
     * @return null
154
     */
155 5
    public function getDescription()
156
    {
157 5
        return $this->description;
158
    }
159
160
    /**
161
     * Print error
162
     *
163
     * @return string
164
     */
165
    public function printError()
166
    {
167
        return 'Error N: ' . $this->getErrorCode() . ' Description: ' . $this->getDescription();
168
    }
169
}
170