-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathevents.go
78 lines (68 loc) · 2 KB
/
events.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package issues
import (
"time"
"dmitri.shuralyov.com/state"
"github.com/shurcooL/users"
)
// Event represents an event that occurred around an issue.
type Event struct {
ID uint64
Actor users.User
CreatedAt time.Time
Type EventType
Close Close // Close is only specified for Closed events.
Rename *Rename // Rename is only provided for Renamed events.
Label *Label // Label is only provided for Labeled and Unlabeled events.
Milestone *Milestone // Milestone is only provided for Milestoned and Demilestoned events.
}
// EventType is the type of an event.
type EventType string
const (
// Reopened is when an issue is reopened.
Reopened EventType = "reopened"
// Closed is when an issue is closed.
Closed EventType = "closed"
// Renamed is when an issue is renamed.
Renamed EventType = "renamed"
// Labeled is when an issue is labeled.
Labeled EventType = "labeled"
// Unlabeled is when an issue is unlabeled.
Unlabeled EventType = "unlabeled"
// Milestoned is when an issue is milestoned.
Milestoned EventType = "milestoned"
// Demilestoned is when an issue is demilestoned.
Demilestoned EventType = "demilestoned"
// CommentDeleted is when an issue comment is deleted.
CommentDeleted EventType = "comment_deleted"
)
// Valid returns non-nil error if the event type is invalid.
func (et EventType) Valid() bool {
switch et {
case Reopened, Closed, Renamed, Labeled, Unlabeled, Milestoned, Demilestoned, CommentDeleted:
return true
default:
return false
}
}
// Close provides details for a Closed event.
type Close struct {
Closer interface{} // Change, Commit, nil.
}
// Change describes a change that closed an issue.
type Change struct {
State state.Change
Title string
HTMLURL string
}
// Commit describes a commit that closed an issue.
type Commit struct {
SHA string
Message string
AuthorAvatarURL string
HTMLURL string
}
// Rename provides details for a Renamed event.
type Rename struct {
From string
To string
}