Completed
Push — master ( 203d4a...ef9e39 )
by
unknown
04:46 queued 02:35
created

Update::__construct()   F

Complexity

Conditions 13
Paths 2080

Size

Total Lines 42
Code Lines 26

Duplication

Lines 8
Ratio 19.05 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
dl 8
loc 42
rs 2.7716
c 2
b 0
f 0
cc 13
eloc 26
nc 2080
nop 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A Update::getUpdateType() 0 17 3

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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 InlineQuery         getInlineQuery()        Optional. New incoming inline query
22
 * @method ChosenInlineResult  getChosenInlineResult() Optional. The result of an inline query that was chosen by a user and sent to their chat partner.
23
 * @method CallbackQuery       getCallbackQuery()      Optional. New incoming callback query
24
 */
25
class Update extends Entity
26
{
27
    /**
28
     * {@inheritdoc}
29
     */
30 8
    protected function subEntities()
31
    {
32
        return [
33 8
            'message'              => Message::class,
34
            'edited_message'       => EditedMessage::class,
35
            'inline_query'         => InlineQuery::class,
36
            'chosen_inline_result' => ChosenInlineResult::class,
37
            'callback_query'       => CallbackQuery::class,
38
        ];
39
    }
40
41
    /**
42
     * Get the update type based on the set properties
43
     *
44
     * @return string|null
45
     */
46
    public function getUpdateType()
47
    {
48
        $types = [
49
            'message',
50
            'edited_message',
51
            'inline_query',
52
            'chosen_inline_result',
53
            'callback_query',
54
        ];
55
        foreach ($types as $type) {
56
            if ($this->getProperty($type)) {
57
                return $type;
58
            }
59
        }
60
61
        return null;
62
    }
63
64
    /**
65
     * Get update content
66
     *
67
     * @return \Longman\TelegramBot\Entities\CallbackQuery
68
     *         |\Longman\TelegramBot\Entities\ChosenInlineResult
69
     *         |\Longman\TelegramBot\Entities\InlineQuery
70
     *         |\Longman\TelegramBot\Entities\Message
71
     */
72
    public function getUpdateContent()
73
    {
74
        if ($update_type = $this->getUpdateType()) {
75
            return $this->getProperty($update_type);
76
        }
77
78
        return null;
79
    }
80
}
81