Skip to content

Commit e24c5f0

Browse files
authored
feat: add CodeScanningAlertEvent (#189)
1 parent 9011afd commit e24c5f0

File tree

4 files changed

+424
-0
lines changed

4 files changed

+424
-0
lines changed

github/github.go

+5
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ const (
7474
WorkflowJobEvent Event = "workflow_job"
7575
WorkflowRunEvent Event = "workflow_run"
7676
GitHubAppAuthorizationEvent Event = "github_app_authorization"
77+
CodeScanningAlertEvent Event = "code_scanning_alert"
7778
)
7879

7980
// EventSubtype defines a GitHub Hook Event subtype
@@ -353,6 +354,10 @@ func (hook Webhook) Parse(r *http.Request, events ...Event) (interface{}, error)
353354
var pl GitHubAppAuthorizationPayload
354355
err = json.Unmarshal([]byte(payload), &pl)
355356
return pl, err
357+
case CodeScanningAlertEvent:
358+
var pl CodeScanningAlertPayload
359+
err = json.Unmarshal([]byte(payload), &pl)
360+
return pl, err
356361
default:
357362
return nil, fmt.Errorf("unknown event %s", gitHubEvent)
358363
}

github/github_test.go

+9
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,15 @@ func TestWebhooks(t *testing.T) {
555555
"X-Github-Event": []string{"github_app_authorization"},
556556
},
557557
},
558+
{
559+
name: "CodeScanningAlertEvent",
560+
event: CodeScanningAlertEvent,
561+
typ: CodeScanningAlertPayload{},
562+
filename: "../testdata/github/code_scanning_alert.json",
563+
headers: http.Header{
564+
"X-Github-Event": []string{"code_scanning_alert"},
565+
},
566+
},
558567
}
559568

560569
for _, tt := range tests {

github/payload.go

+202
Original file line numberDiff line numberDiff line change
@@ -7180,3 +7180,205 @@ type GitHubAppAuthorizationPayload struct {
71807180
SiteAdmin bool `json:"site_admin"`
71817181
} `json:"sender"`
71827182
}
7183+
7184+
// CodeScanningAlertPayload contains code scanning alert payload
7185+
type CodeScanningAlertPayload struct {
7186+
Action string `json:"action"`
7187+
Alert struct {
7188+
Number int `json:"number"`
7189+
CreatedAt time.Time `json:"created_at"`
7190+
UpdatedAt time.Time `json:"updated_at"`
7191+
Url string `json:"url"`
7192+
HtmlUrl string `json:"html_url"`
7193+
State string `json:"state"`
7194+
FixedAt interface{} `json:"fixed_at"`
7195+
DismissedBy interface{} `json:"dismissed_by"`
7196+
DismissedAt interface{} `json:"dismissed_at"`
7197+
DismissedReason interface{} `json:"dismissed_reason"`
7198+
DismissedComment interface{} `json:"dismissed_comment"`
7199+
Rule struct {
7200+
Id string `json:"id"`
7201+
Severity string `json:"severity"`
7202+
Description string `json:"description"`
7203+
Name string `json:"name"`
7204+
Tags []string `json:"tags"`
7205+
FullDescription string `json:"full_description"`
7206+
Help string `json:"help"`
7207+
HelpUri string `json:"help_uri"`
7208+
SecuritySeverityLevel string `json:"security_severity_level"`
7209+
} `json:"rule"`
7210+
Tool struct {
7211+
Name string `json:"name"`
7212+
Guid interface{} `json:"guid"`
7213+
Version string `json:"version"`
7214+
} `json:"tool"`
7215+
MostRecentInstance struct {
7216+
Ref string `json:"ref"`
7217+
AnalysisKey string `json:"analysis_key"`
7218+
Environment string `json:"environment"`
7219+
Category string `json:"category"`
7220+
State string `json:"state"`
7221+
CommitSha string `json:"commit_sha"`
7222+
Message struct {
7223+
Text string `json:"text"`
7224+
} `json:"message"`
7225+
Location struct {
7226+
Path string `json:"path"`
7227+
StartLine int `json:"start_line"`
7228+
EndLine int `json:"end_line"`
7229+
StartColumn int `json:"start_column"`
7230+
EndColumn int `json:"end_column"`
7231+
} `json:"location"`
7232+
Classifications []interface{} `json:"classifications"`
7233+
} `json:"most_recent_instance"`
7234+
InstancesUrl string `json:"instances_url"`
7235+
} `json:"alert"`
7236+
Ref string `json:"ref"`
7237+
CommitOid string `json:"commit_oid"`
7238+
Repository struct {
7239+
Id int `json:"id"`
7240+
NodeId string `json:"node_id"`
7241+
Name string `json:"name"`
7242+
FullName string `json:"full_name"`
7243+
Private bool `json:"private"`
7244+
Owner struct {
7245+
Login string `json:"login"`
7246+
Id int `json:"id"`
7247+
NodeId string `json:"node_id"`
7248+
AvatarUrl string `json:"avatar_url"`
7249+
GravatarId string `json:"gravatar_id"`
7250+
Url string `json:"url"`
7251+
HtmlUrl string `json:"html_url"`
7252+
FollowersUrl string `json:"followers_url"`
7253+
FollowingUrl string `json:"following_url"`
7254+
GistsUrl string `json:"gists_url"`
7255+
StarredUrl string `json:"starred_url"`
7256+
SubscriptionsUrl string `json:"subscriptions_url"`
7257+
OrganizationsUrl string `json:"organizations_url"`
7258+
ReposUrl string `json:"repos_url"`
7259+
EventsUrl string `json:"events_url"`
7260+
ReceivedEventsUrl string `json:"received_events_url"`
7261+
Type string `json:"type"`
7262+
SiteAdmin bool `json:"site_admin"`
7263+
} `json:"owner"`
7264+
HtmlUrl string `json:"html_url"`
7265+
Description string `json:"description"`
7266+
Fork bool `json:"fork"`
7267+
Url string `json:"url"`
7268+
ForksUrl string `json:"forks_url"`
7269+
KeysUrl string `json:"keys_url"`
7270+
CollaboratorsUrl string `json:"collaborators_url"`
7271+
TeamsUrl string `json:"teams_url"`
7272+
HooksUrl string `json:"hooks_url"`
7273+
IssueEventsUrl string `json:"issue_events_url"`
7274+
EventsUrl string `json:"events_url"`
7275+
AssigneesUrl string `json:"assignees_url"`
7276+
BranchesUrl string `json:"branches_url"`
7277+
TagsUrl string `json:"tags_url"`
7278+
BlobsUrl string `json:"blobs_url"`
7279+
GitTagsUrl string `json:"git_tags_url"`
7280+
GitRefsUrl string `json:"git_refs_url"`
7281+
TreesUrl string `json:"trees_url"`
7282+
StatusesUrl string `json:"statuses_url"`
7283+
LanguagesUrl string `json:"languages_url"`
7284+
StargazersUrl string `json:"stargazers_url"`
7285+
ContributorsUrl string `json:"contributors_url"`
7286+
SubscribersUrl string `json:"subscribers_url"`
7287+
SubscriptionUrl string `json:"subscription_url"`
7288+
CommitsUrl string `json:"commits_url"`
7289+
GitCommitsUrl string `json:"git_commits_url"`
7290+
CommentsUrl string `json:"comments_url"`
7291+
IssueCommentUrl string `json:"issue_comment_url"`
7292+
ContentsUrl string `json:"contents_url"`
7293+
CompareUrl string `json:"compare_url"`
7294+
MergesUrl string `json:"merges_url"`
7295+
ArchiveUrl string `json:"archive_url"`
7296+
DownloadsUrl string `json:"downloads_url"`
7297+
IssuesUrl string `json:"issues_url"`
7298+
PullsUrl string `json:"pulls_url"`
7299+
MilestonesUrl string `json:"milestones_url"`
7300+
NotificationsUrl string `json:"notifications_url"`
7301+
LabelsUrl string `json:"labels_url"`
7302+
ReleasesUrl string `json:"releases_url"`
7303+
DeploymentsUrl string `json:"deployments_url"`
7304+
CreatedAt time.Time `json:"created_at"`
7305+
UpdatedAt time.Time `json:"updated_at"`
7306+
PushedAt time.Time `json:"pushed_at"`
7307+
GitUrl string `json:"git_url"`
7308+
SshUrl string `json:"ssh_url"`
7309+
CloneUrl string `json:"clone_url"`
7310+
SvnUrl string `json:"svn_url"`
7311+
Homepage string `json:"homepage"`
7312+
Size int `json:"size"`
7313+
StargazersCount int `json:"stargazers_count"`
7314+
WatchersCount int `json:"watchers_count"`
7315+
Language string `json:"language"`
7316+
HasIssues bool `json:"has_issues"`
7317+
HasProjects bool `json:"has_projects"`
7318+
HasDownloads bool `json:"has_downloads"`
7319+
HasWiki bool `json:"has_wiki"`
7320+
HasPages bool `json:"has_pages"`
7321+
HasDiscussions bool `json:"has_discussions"`
7322+
ForksCount int `json:"forks_count"`
7323+
MirrorUrl interface{} `json:"mirror_url"`
7324+
Archived bool `json:"archived"`
7325+
Disabled bool `json:"disabled"`
7326+
OpenIssuesCount int `json:"open_issues_count"`
7327+
License interface{} `json:"license"`
7328+
AllowForking bool `json:"allow_forking"`
7329+
IsTemplate bool `json:"is_template"`
7330+
WebCommitSignoffRequired bool `json:"web_commit_signoff_required"`
7331+
Topics []string `json:"topics"`
7332+
Visibility string `json:"visibility"`
7333+
Forks int `json:"forks"`
7334+
OpenIssues int `json:"open_issues"`
7335+
Watchers int `json:"watchers"`
7336+
DefaultBranch string `json:"default_branch"`
7337+
} `json:"repository"`
7338+
Organization struct {
7339+
Login string `json:"login"`
7340+
Id int `json:"id"`
7341+
NodeId string `json:"node_id"`
7342+
Url string `json:"url"`
7343+
ReposUrl string `json:"repos_url"`
7344+
EventsUrl string `json:"events_url"`
7345+
HooksUrl string `json:"hooks_url"`
7346+
IssuesUrl string `json:"issues_url"`
7347+
MembersUrl string `json:"members_url"`
7348+
PublicMembersUrl string `json:"public_members_url"`
7349+
AvatarUrl string `json:"avatar_url"`
7350+
Description string `json:"description"`
7351+
} `json:"organization"`
7352+
Enterprise struct {
7353+
Id int `json:"id"`
7354+
Slug string `json:"slug"`
7355+
Name string `json:"name"`
7356+
NodeId string `json:"node_id"`
7357+
AvatarUrl string `json:"avatar_url"`
7358+
Description string `json:"description"`
7359+
WebsiteUrl string `json:"website_url"`
7360+
HtmlUrl string `json:"html_url"`
7361+
CreatedAt time.Time `json:"created_at"`
7362+
UpdatedAt time.Time `json:"updated_at"`
7363+
} `json:"enterprise"`
7364+
Sender struct {
7365+
Login string `json:"login"`
7366+
Id int `json:"id"`
7367+
NodeId string `json:"node_id"`
7368+
AvatarUrl string `json:"avatar_url"`
7369+
GravatarId string `json:"gravatar_id"`
7370+
Url string `json:"url"`
7371+
HtmlUrl string `json:"html_url"`
7372+
FollowersUrl string `json:"followers_url"`
7373+
FollowingUrl string `json:"following_url"`
7374+
GistsUrl string `json:"gists_url"`
7375+
StarredUrl string `json:"starred_url"`
7376+
SubscriptionsUrl string `json:"subscriptions_url"`
7377+
OrganizationsUrl string `json:"organizations_url"`
7378+
ReposUrl string `json:"repos_url"`
7379+
EventsUrl string `json:"events_url"`
7380+
ReceivedEventsUrl string `json:"received_events_url"`
7381+
Type string `json:"type"`
7382+
SiteAdmin bool `json:"site_admin"`
7383+
} `json:"sender"`
7384+
}

0 commit comments

Comments
 (0)