code.gitea.io/gitea@v1.21.7/services/webhook/payloader.go (about) 1 // Copyright 2020 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package webhook 5 6 import ( 7 api "code.gitea.io/gitea/modules/structs" 8 webhook_module "code.gitea.io/gitea/modules/webhook" 9 ) 10 11 // PayloadConvertor defines the interface to convert system webhook payload to external payload 12 type PayloadConvertor interface { 13 api.Payloader 14 Create(*api.CreatePayload) (api.Payloader, error) 15 Delete(*api.DeletePayload) (api.Payloader, error) 16 Fork(*api.ForkPayload) (api.Payloader, error) 17 Issue(*api.IssuePayload) (api.Payloader, error) 18 IssueComment(*api.IssueCommentPayload) (api.Payloader, error) 19 Push(*api.PushPayload) (api.Payloader, error) 20 PullRequest(*api.PullRequestPayload) (api.Payloader, error) 21 Review(*api.PullRequestPayload, webhook_module.HookEventType) (api.Payloader, error) 22 Repository(*api.RepositoryPayload) (api.Payloader, error) 23 Release(*api.ReleasePayload) (api.Payloader, error) 24 Wiki(*api.WikiPayload) (api.Payloader, error) 25 Package(*api.PackagePayload) (api.Payloader, error) 26 } 27 28 func convertPayloader(s PayloadConvertor, p api.Payloader, event webhook_module.HookEventType) (api.Payloader, error) { 29 switch event { 30 case webhook_module.HookEventCreate: 31 return s.Create(p.(*api.CreatePayload)) 32 case webhook_module.HookEventDelete: 33 return s.Delete(p.(*api.DeletePayload)) 34 case webhook_module.HookEventFork: 35 return s.Fork(p.(*api.ForkPayload)) 36 case webhook_module.HookEventIssues, webhook_module.HookEventIssueAssign, webhook_module.HookEventIssueLabel, webhook_module.HookEventIssueMilestone: 37 return s.Issue(p.(*api.IssuePayload)) 38 case webhook_module.HookEventIssueComment, webhook_module.HookEventPullRequestComment: 39 pl, ok := p.(*api.IssueCommentPayload) 40 if ok { 41 return s.IssueComment(pl) 42 } 43 return s.PullRequest(p.(*api.PullRequestPayload)) 44 case webhook_module.HookEventPush: 45 return s.Push(p.(*api.PushPayload)) 46 case webhook_module.HookEventPullRequest, webhook_module.HookEventPullRequestAssign, webhook_module.HookEventPullRequestLabel, 47 webhook_module.HookEventPullRequestMilestone, webhook_module.HookEventPullRequestSync, webhook_module.HookEventPullRequestReviewRequest: 48 return s.PullRequest(p.(*api.PullRequestPayload)) 49 case webhook_module.HookEventPullRequestReviewApproved, webhook_module.HookEventPullRequestReviewRejected, webhook_module.HookEventPullRequestReviewComment: 50 return s.Review(p.(*api.PullRequestPayload), event) 51 case webhook_module.HookEventRepository: 52 return s.Repository(p.(*api.RepositoryPayload)) 53 case webhook_module.HookEventRelease: 54 return s.Release(p.(*api.ReleasePayload)) 55 case webhook_module.HookEventWiki: 56 return s.Wiki(p.(*api.WikiPayload)) 57 case webhook_module.HookEventPackage: 58 return s.Package(p.(*api.PackagePayload)) 59 } 60 return s, nil 61 }