...
1
2
3
4
5
6 package github
7
8 import (
9 "encoding/json"
10 "time"
11 )
12
13
14 type Event struct {
15 Type *string `json:"type,omitempty"`
16 Public *bool `json:"public,omitempty"`
17 RawPayload *json.RawMessage `json:"payload,omitempty"`
18 Repo *Repository `json:"repo,omitempty"`
19 Actor *User `json:"actor,omitempty"`
20 Org *Organization `json:"org,omitempty"`
21 CreatedAt *time.Time `json:"created_at,omitempty"`
22 ID *string `json:"id,omitempty"`
23 }
24
25 func (e Event) String() string {
26 return Stringify(e)
27 }
28
29
30
31 func (e *Event) ParsePayload() (payload interface{}, err error) {
32 switch *e.Type {
33 case "BranchProtectionRuleEvent":
34 payload = &BranchProtectionRuleEvent{}
35 case "CheckRunEvent":
36 payload = &CheckRunEvent{}
37 case "CheckSuiteEvent":
38 payload = &CheckSuiteEvent{}
39 case "CommitCommentEvent":
40 payload = &CommitCommentEvent{}
41 case "ContentReferenceEvent":
42 payload = &ContentReferenceEvent{}
43 case "CreateEvent":
44 payload = &CreateEvent{}
45 case "DeleteEvent":
46 payload = &DeleteEvent{}
47 case "DeployKeyEvent":
48 payload = &DeployKeyEvent{}
49 case "DeploymentEvent":
50 payload = &DeploymentEvent{}
51 case "DeploymentStatusEvent":
52 payload = &DeploymentStatusEvent{}
53 case "DiscussionEvent":
54 payload = &DiscussionEvent{}
55 case "ForkEvent":
56 payload = &ForkEvent{}
57 case "GitHubAppAuthorizationEvent":
58 payload = &GitHubAppAuthorizationEvent{}
59 case "GollumEvent":
60 payload = &GollumEvent{}
61 case "InstallationEvent":
62 payload = &InstallationEvent{}
63 case "InstallationRepositoriesEvent":
64 payload = &InstallationRepositoriesEvent{}
65 case "IssueCommentEvent":
66 payload = &IssueCommentEvent{}
67 case "IssuesEvent":
68 payload = &IssuesEvent{}
69 case "LabelEvent":
70 payload = &LabelEvent{}
71 case "MarketplacePurchaseEvent":
72 payload = &MarketplacePurchaseEvent{}
73 case "MemberEvent":
74 payload = &MemberEvent{}
75 case "MembershipEvent":
76 payload = &MembershipEvent{}
77 case "MetaEvent":
78 payload = &MetaEvent{}
79 case "MilestoneEvent":
80 payload = &MilestoneEvent{}
81 case "OrganizationEvent":
82 payload = &OrganizationEvent{}
83 case "OrgBlockEvent":
84 payload = &OrgBlockEvent{}
85 case "PackageEvent":
86 payload = &PackageEvent{}
87 case "PageBuildEvent":
88 payload = &PageBuildEvent{}
89 case "PingEvent":
90 payload = &PingEvent{}
91 case "ProjectEvent":
92 payload = &ProjectEvent{}
93 case "ProjectCardEvent":
94 payload = &ProjectCardEvent{}
95 case "ProjectColumnEvent":
96 payload = &ProjectColumnEvent{}
97 case "PublicEvent":
98 payload = &PublicEvent{}
99 case "PullRequestEvent":
100 payload = &PullRequestEvent{}
101 case "PullRequestReviewEvent":
102 payload = &PullRequestReviewEvent{}
103 case "PullRequestReviewCommentEvent":
104 payload = &PullRequestReviewCommentEvent{}
105 case "PullRequestReviewThreadEvent":
106 payload = &PullRequestReviewThreadEvent{}
107 case "PullRequestTargetEvent":
108 payload = &PullRequestTargetEvent{}
109 case "PushEvent":
110 payload = &PushEvent{}
111 case "ReleaseEvent":
112 payload = &ReleaseEvent{}
113 case "RepositoryEvent":
114 payload = &RepositoryEvent{}
115 case "RepositoryDispatchEvent":
116 payload = &RepositoryDispatchEvent{}
117 case "RepositoryImportEvent":
118 payload = &RepositoryImportEvent{}
119 case "RepositoryVulnerabilityAlertEvent":
120 payload = &RepositoryVulnerabilityAlertEvent{}
121 case "SecretScanningAlertEvent":
122 payload = &SecretScanningAlertEvent{}
123 case "StarEvent":
124 payload = &StarEvent{}
125 case "StatusEvent":
126 payload = &StatusEvent{}
127 case "TeamEvent":
128 payload = &TeamEvent{}
129 case "TeamAddEvent":
130 payload = &TeamAddEvent{}
131 case "UserEvent":
132 payload = &UserEvent{}
133 case "WatchEvent":
134 payload = &WatchEvent{}
135 case "WorkflowDispatchEvent":
136 payload = &WorkflowDispatchEvent{}
137 case "WorkflowJobEvent":
138 payload = &WorkflowJobEvent{}
139 case "WorkflowRunEvent":
140 payload = &WorkflowRunEvent{}
141 }
142 err = json.Unmarshal(*e.RawPayload, &payload)
143 return payload, err
144 }
145
146
147
148
149
150
151 func (e *Event) Payload() (payload interface{}) {
152 var err error
153 payload, err = e.ParsePayload()
154 if err != nil {
155 panic(err)
156 }
157 return payload
158 }
159
View as plain text