GoogleSearchMiddleware   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 41
rs 10
wmc 7
lcom 1
cbo 2

1 Method

Rating   Name   Duplication   Size   Complexity  
C handle() 0 34 7
1
<?php
2
namespace Domains\Bot\Middlewares;
3
4
use Domains\Message;
5
use Domains\Middleware\MiddlewareInterface;
6
7
/**
8
 * Class GoogleSearchMiddleware
9
 */
10
class GoogleSearchMiddleware implements MiddlewareInterface
11
{
12
    /**
13
     * @param Message $message
14
     * @return mixed
15
     */
16
    public function handle(Message $message)
17
    {
18
        $text = $message->escaped_text;
19
20
        if (preg_match('/^(@.*?\s)?(?:погугли|загугли|гугли)\s(.*?)$/isu', $text, $matches)) {
21
            if (!trim($matches[2])) {
22
                return $message;
23
            }
24
25
            $hasMentions = count($message->mentions);
26
            $mention = null;
27
28
            if ($hasMentions) {
29
                $mention = $message->mentions[0]->isBot()
30
                    ? $message->user
31
                    : $message->mentions[0];
32
            }
33
34
            $answer = trim($matches[1]) && $mention
35
                ? trans('google.personal', [
36
                    'user'  => $mention->login,
37
                    'query' => urlencode($matches[2]),
38
                ])
39
                : trans('google.common', [
40
                    'query' => urlencode($matches[2]),
41
                ]);
42
43
            $message->italic($answer);
44
45
            return null;
46
        }
47
48
        return $message;
49
    }
50
}
51