Passed
Push — master ( 0675d7...59fbae )
by Kevin
02:33
created

MessageTask   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 9
eloc 21
c 1
b 0
f 1
dl 0
loc 61
ccs 23
cts 23
cp 1
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getStamps() 0 3 1
A messageClass() 0 3 2
A getMissingDependencyMessage() 0 3 1
A getMessage() 0 3 1
A getContext() 0 17 3
A __construct() 0 6 1
1
<?php
2
3
namespace Zenstruck\ScheduleBundle\Schedule\Task;
4
5
use Symfony\Component\Messenger\Envelope;
6
use Symfony\Component\Messenger\Stamp\StampInterface;
7
use Zenstruck\ScheduleBundle\Schedule\HasMissingDependencyMessage;
8
use Zenstruck\ScheduleBundle\Schedule\Task;
9
10
/**
11
 * @experimental This is experimental and may experience BC breaks
12
 *
13
 * @author Kevin Bond <[email protected]>
14
 */
15
final class MessageTask extends Task implements HasMissingDependencyMessage
16
{
17
    private $message;
18
    private $stamps;
19
20
    /**
21
     * @param object|Envelope  $message
22
     * @param StampInterface[] $stamps
23
     */
24 12
    public function __construct(object $message, array $stamps = [])
25
    {
26 12
        $this->message = $message;
27 12
        $this->stamps = $stamps;
28
29 12
        parent::__construct($this->messageClass());
30 12
    }
31
32
    /**
33
     * @return object|Envelope
34
     */
35 6
    public function getMessage(): object
36
    {
37 6
        return $this->message;
38
    }
39
40
    /**
41
     * @return StampInterface[]
42
     */
43 6
    public function getStamps(): array
44
    {
45 6
        return $this->stamps;
46
    }
47
48 2
    public function getContext(): array
49
    {
50 2
        $stamps = \array_merge(
51 2
            $this->message instanceof Envelope ? \array_keys($this->message->all()) : [],
52
            \array_map(static function(StampInterface $stamp) { return \get_class($stamp); }, $this->stamps)
53
        );
54 2
        $stamps = \array_map(
55
            static function($stamp) {
56 1
                return (new \ReflectionClass($stamp))->getShortName();
57 2
            },
58 2
            $stamps
59
        );
60 2
        $stamps = \implode(', ', \array_unique($stamps));
61
62
        return [
63 2
            'Message' => $this->messageClass(),
64 2
            'Stamps' => $stamps ?: '(none)',
65
        ];
66
    }
67
68 1
    public static function getMissingDependencyMessage(): string
69
    {
70 1
        return 'To use the message task you must install symfony/messenger (composer require symfony/messenger) and enable (config path: "zenstruck_schedule.messenger").';
71
    }
72
73 12
    private function messageClass(): string
74
    {
75 12
        return $this->message instanceof Envelope ? \get_class($this->message->getMessage()) : \get_class($this->message);
76
    }
77
}
78