Update::getUpdateType()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 19
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
dl 0
loc 19
rs 9.4285
c 0
b 0
f 0
ccs 0
cts 6
cp 0
cc 3
eloc 13
nc 3
nop 0
crap 12
1
<?php
2
/**
3
 * This file is part of the TelegramBot package.
4
 *
5
 * (c) Avtandil Kikabidze aka LONGMAN <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
namespace Longman\TelegramBot\Entities;
12
13
/**
14
 * Class Update
15
 *
16
 * @link https://core.telegram.org/bots/api#update
17
 *
18
 * @method int                 getUpdateId()           The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you’re using Webhooks, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order.
19
 * @method Message             getMessage()            Optional. New incoming message of any kind — text, photo, sticker, etc.
20
 * @method Message             getEditedMessage()      Optional. New version of a message that is known to the bot and was edited
21
 * @method Message             getChannelPost()        Optional. New post in the channel, can be any kind — text, photo, sticker, etc.
22
 * @method Message             getEditedChannelPost()  Optional. New version of a post in the channel that is known to the bot and was edited
23
 * @method InlineQuery         getInlineQuery()        Optional. New incoming inline query
24
 * @method ChosenInlineResult  getChosenInlineResult() Optional. The result of an inline query that was chosen by a user and sent to their chat partner.
25
 * @method CallbackQuery       getCallbackQuery()      Optional. New incoming callback query
26
 */
27
class Update extends Entity
28
{
29
    /**
30
     * {@inheritdoc}
31
     */
32 9
    protected function subEntities()
33
    {
34
        return [
35 9
            'message'              => Message::class,
36
            'edited_message'       => EditedMessage::class,
37
            'channel_post'         => ChannelPost::class,
38
            'edited_channel_post'  => EditedChannelPost::class,
39
            'inline_query'         => InlineQuery::class,
40
            'chosen_inline_result' => ChosenInlineResult::class,
41
            'callback_query'       => CallbackQuery::class,
42
        ];
43
    }
44
45
    /**
46
     * Get the update type based on the set properties
47
     *
48
     * @return string|null
49
     */
50
    public function getUpdateType()
51
    {
52
        $types = [
53
            'message',
54
            'edited_message',
55
            'channel_post',
56
            'edited_channel_post',
57
            'inline_query',
58
            'chosen_inline_result',
59
            'callback_query',
60
        ];
61
        foreach ($types as $type) {
62
            if ($this->getProperty($type)) {
63
                return $type;
64
            }
65
        }
66
67
        return null;
68
    }
69
70
    /**
71
     * Get update content
72
     *
73
     * @return \Longman\TelegramBot\Entities\CallbackQuery
74
     *         |\Longman\TelegramBot\Entities\ChosenInlineResult
75
     *         |\Longman\TelegramBot\Entities\InlineQuery
76
     *         |\Longman\TelegramBot\Entities\Message
77
     */
78
    public function getUpdateContent()
79
    {
80
        if ($update_type = $this->getUpdateType()) {
81
            return $this->getProperty($update_type);
82
        }
83
84
        return null;
85
    }
86
}
87