Passed
Pull Request — master (#8)
by Kevin
19:20
created

CallbackHandler::supports()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 1
c 1
b 0
f 1
dl 0
loc 3
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Zenstruck\ScheduleBundle\Schedule\Extension\Handler;
4
5
use Zenstruck\ScheduleBundle\Schedule;
6
use Zenstruck\ScheduleBundle\Schedule\Extension;
7
use Zenstruck\ScheduleBundle\Schedule\Extension\CallbackExtension;
8
use Zenstruck\ScheduleBundle\Schedule\Extension\ExtensionHandler;
9
use Zenstruck\ScheduleBundle\Schedule\RunContext;
10
use Zenstruck\ScheduleBundle\Schedule\ScheduleRunContext;
11
use Zenstruck\ScheduleBundle\Schedule\Task;
12
use Zenstruck\ScheduleBundle\Schedule\Task\TaskRunContext;
13
14
/**
15
 * @author Kevin Bond <[email protected]>
16
 */
17
final class CallbackHandler extends ExtensionHandler
18
{
19
    /**
20
     * @param CallbackExtension|Extension $extension
21
     */
22
    public function filterSchedule(ScheduleRunContext $context, Extension $extension): void
23
    {
24
        $this->runIf($extension, Schedule::FILTER, $context);
25
    }
26
27
    /**
28
     * @param CallbackExtension|Extension $extension
29
     */
30
    public function beforeSchedule(ScheduleRunContext $context, Extension $extension): void
31
    {
32
        $this->runIf($extension, Schedule::BEFORE, $context);
33
    }
34
35
    /**
36
     * @param CallbackExtension|Extension $extension
37
     */
38
    public function afterSchedule(ScheduleRunContext $context, Extension $extension): void
39
    {
40
        $this->runIf($extension, Schedule::AFTER, $context);
41
    }
42
43
    /**
44
     * @param CallbackExtension|Extension $extension
45
     */
46
    public function onScheduleSuccess(ScheduleRunContext $context, Extension $extension): void
47
    {
48
        $this->runIf($extension, Schedule::SUCCESS, $context);
49
    }
50
51
    /**
52
     * @param CallbackExtension|Extension $extension
53
     */
54
    public function onScheduleFailure(ScheduleRunContext $context, Extension $extension): void
55
    {
56
        $this->runIf($extension, Schedule::FAILURE, $context);
57
    }
58
59
    /**
60
     * @param CallbackExtension|Extension $extension
61
     */
62
    public function filterTask(TaskRunContext $context, Extension $extension): void
63
    {
64
        $this->runIf($extension, Task::FILTER, $context);
65
    }
66
67
    /**
68
     * @param CallbackExtension|Extension $extension
69
     */
70
    public function beforeTask(TaskRunContext $context, Extension $extension): void
71
    {
72
        $this->runIf($extension, Task::BEFORE, $context);
73
    }
74
75
    /**
76
     * @param CallbackExtension|Extension $extension
77
     */
78
    public function afterTask(TaskRunContext $context, Extension $extension): void
79
    {
80
        $this->runIf($extension, Task::AFTER, $context);
81
    }
82
83
    /**
84
     * @param CallbackExtension|Extension $extension
85
     */
86
    public function onTaskSuccess(TaskRunContext $context, Extension $extension): void
87
    {
88
        $this->runIf($extension, Task::SUCCESS, $context);
89
    }
90
91
    /**
92
     * @param CallbackExtension|Extension $extension
93
     */
94
    public function onTaskFailure(TaskRunContext $context, Extension $extension): void
95
    {
96
        $this->runIf($extension, Task::FAILURE, $context);
97
    }
98
99
    public function supports(Extension $extension): bool
100
    {
101
        return $extension instanceof CallbackExtension;
102
    }
103
104
    private function runIf(CallbackExtension $extension, string $expectedHook, RunContext $context): void
105
    {
106
        if ($expectedHook === $extension->getHook()) {
107
            $extension->getCallback()($context);
108
        }
109
    }
110
}
111