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

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