Completed
Push — master ( 0c6969...c5e7c1 )
by Luke
03:34
created

Event::getDedupeKey()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
/**
3
 * PagerDuty v2 Events API Library.
4
 *
5
 * @author    Luke Waite <[email protected]>
6
 * @copyright 2017 Luke Waite
7
 * @license   http://www.opensource.org/licenses/mit-license.php MIT
8
 *
9
 * @link      https://github.com/lukewaite/pagerduty
10
 */
11
12
namespace LukeWaite\PagerDuty;
13
14
class Event
15
{
16
    protected $event;
17
18 12
    public static function create($event = [])
19
    {
20 12
        return new static($event);
21
    }
22
23 30
    public function __construct($event = [])
24
    {
25 30
        foreach (array_keys($event) as $key) {
26 12
            $this->event[$key] = $event[$key];
27 10
        }
28
29 30
        $this->setDefaults();
30 30
    }
31
32 30
    protected function setDefaults()
33
    {
34 30
        if (!isset($this->event['payload']['severity'])) {
35 30
            $this->event['payload']['severity'] = 'critical';
36 10
        }
37
38
39 30
        if (!isset($this->event['payload']['source'])) {
40 18
            $this->event['payload']['source'] = gethostname();
41 6
        }
42 30
    }
43
44 6
    public function setRoutingKey($value)
45
    {
46 6
        return $this->setMeta('routing_key', $value);
47
    }
48
49
    public function resolve()
50
    {
51
        // TODO: Implement resolve
52
    }
53
54
    public function trigger()
55
    {
56
        // TODO: Implement trigger
57
    }
58
59
    public function acknowledge()
60
    {
61
        // TODO: Implement acknowledge
62
    }
63
64 12
    public function setDedupKey($key)
65
    {
66 12
        return $this->setMeta('dedup_key', $key);
67
    }
68
69 6
    public function getDedupeKey()
70
    {
71 6
        return $this->event["dedup_key"];
72
    }
73
74 6
    public function setSummary($value)
75
    {
76 6
        return $this->setPayload('summary', $value);
77
    }
78
79 6
    public function setSource($value)
80
    {
81 6
        return $this->setPayload('source', $value);
82
    }
83
84 6
    public function setSeverity($value)
85
    {
86 6
        return $this->setPayload('severity', $value);
87
    }
88
89 6
    public function setTimestamp($value)
90
    {
91 6
        return $this->setPayload('timestamp', $value);
92
    }
93
94 6
    public function setComponent($value)
95
    {
96 6
        return $this->setPayload('component', $value);
97
    }
98
99 6
    public function setGroup($value)
100
    {
101 6
        return $this->setPayload('group', $value);
102
    }
103
104 6
    public function setClass($value)
105
    {
106 6
        return $this->setPayload('class', $value);
107
    }
108
109 6
    public function addCustomDetail($key, $value)
110
    {
111 6
        $this->event["payload"]["custom_details"][$key] = $value;
112
113 6
        return $this;
114
    }
115
116
    public function addLink()
117
    {
118
        // TODO: Implement addLink
119
    }
120
121
    public function addImage()
122
    {
123
        // TODO: Implement addImage
124
    }
125
126 6
    protected function setPayload($key, $value)
127
    {
128 6
        $this->event["payload"][$key] = $value;
129
130 6
        return $this;
131
    }
132
133 12
    protected function setMeta($key, $value)
134
    {
135 12
        $this->event[$key] = $value;
136
137 12
        return $this;
138
    }
139
140 24
    public function toArray()
141
    {
142 24
        return $this->event;
143
    }
144
145
    public function toJson()
146
    {
147
        return json_encode($this->event);
148
    }
149
}
150