@@ -150,8 +150,10 @@ func (p *GitHubParser) PopulateEvent(event *info.Event, parsedEvent any) error {
150150 event .DefaultBranch = gitEvent .GetRepo ().GetDefaultBranch ()
151151 event .PullRequestNumber = gitEvent .GetPullRequest ().GetNumber ()
152152 event .TriggerTarget = triggertype .PullRequest
153- for _ , label := range gitEvent .GetPullRequest ().Labels {
154- event .PullRequestLabel = append (event .PullRequestLabel , label .GetName ())
153+ if gitEvent .GetPullRequest () != nil {
154+ for _ , label := range gitEvent .GetPullRequest ().Labels {
155+ event .PullRequestLabel = append (event .PullRequestLabel , label .GetName ())
156+ }
155157 }
156158 case * github.PushEvent :
157159 event .Organization = gitEvent .GetRepo ().GetOwner ().GetLogin ()
@@ -242,8 +244,11 @@ func (p *GitLabParser) PopulateEvent(event *info.Event, parsedEvent any) error {
242244 case * gitlab.MergeEvent :
243245 event .Organization = extractOrgFromPath (gitEvent .Project .PathWithNamespace )
244246 event .Repository = extractRepoFromPath (gitEvent .Project .PathWithNamespace )
245- event .Sender = gitEvent .User .Username
246247 event .URL = gitEvent .Project .WebURL
248+ event .DefaultBranch = gitEvent .Project .DefaultBranch
249+ if gitEvent .User != nil {
250+ event .Sender = gitEvent .User .Username
251+ }
247252 event .SHA = gitEvent .ObjectAttributes .LastCommit .ID
248253 event .SHAURL = gitEvent .ObjectAttributes .LastCommit .URL
249254 event .SHATitle = gitEvent .ObjectAttributes .LastCommit .Title
@@ -257,7 +262,6 @@ func (p *GitLabParser) PopulateEvent(event *info.Event, parsedEvent any) error {
257262 }
258263 event .PullRequestNumber = gitEvent .ObjectAttributes .IID
259264 event .PullRequestTitle = gitEvent .ObjectAttributes .Title
260- event .DefaultBranch = gitEvent .Project .DefaultBranch
261265 event .TriggerTarget = triggertype .PullRequest
262266 if gitEvent .ObjectAttributes .Action == "close" {
263267 event .TriggerTarget = triggertype .PullRequestClosed
@@ -272,34 +276,38 @@ func (p *GitLabParser) PopulateEvent(event *info.Event, parsedEvent any) error {
272276 lastCommitIdx := len (gitEvent .Commits ) - 1
273277 event .Organization = extractOrgFromPath (gitEvent .Project .PathWithNamespace )
274278 event .Repository = extractRepoFromPath (gitEvent .Project .PathWithNamespace )
275- event .Sender = gitEvent .UserUsername
276279 event .URL = gitEvent .Project .WebURL
277- event .SHA = gitEvent .Commits [lastCommitIdx ].ID
278- event .SHAURL = gitEvent .Commits [lastCommitIdx ].URL
279- event .SHATitle = gitEvent .Commits [lastCommitIdx ].Title
280- event .HeadBranch = gitEvent .Ref
281- event .BaseBranch = gitEvent .Ref
282280 event .HeadURL = gitEvent .Project .WebURL
283281 event .BaseURL = gitEvent .Project .WebURL
284282 event .DefaultBranch = gitEvent .Project .DefaultBranch
283+ event .Sender = gitEvent .UserUsername
284+ if gitEvent .Commits [lastCommitIdx ] != nil {
285+ event .SHA = gitEvent .Commits [lastCommitIdx ].ID
286+ event .SHAURL = gitEvent .Commits [lastCommitIdx ].URL
287+ event .SHATitle = gitEvent .Commits [lastCommitIdx ].Title
288+ }
289+ event .HeadBranch = gitEvent .Ref
290+ event .BaseBranch = gitEvent .Ref
285291 event .TriggerTarget = triggertype .Push
286292 case * gitlab.TagEvent :
287293 if len (gitEvent .Commits ) == 0 {
288294 return fmt .Errorf ("no commits attached to this tag event" )
289295 }
290296 lastCommitIdx := len (gitEvent .Commits ) - 1
297+ event .Sender = gitEvent .UserUsername
291298 event .Organization = extractOrgFromPath (gitEvent .Project .PathWithNamespace )
292299 event .Repository = extractRepoFromPath (gitEvent .Project .PathWithNamespace )
293- event .Sender = gitEvent .UserUsername
300+ event .DefaultBranch = gitEvent .Project . DefaultBranch
294301 event .URL = gitEvent .Project .WebURL
295- event .SHA = gitEvent .Commits [lastCommitIdx ].ID
296- event .SHAURL = gitEvent .Commits [lastCommitIdx ].URL
297- event .SHATitle = gitEvent .Commits [lastCommitIdx ].Title
298- event .HeadBranch = gitEvent .Ref
299- event .BaseBranch = gitEvent .Ref
300302 event .HeadURL = gitEvent .Project .WebURL
301303 event .BaseURL = gitEvent .Project .WebURL
302- event .DefaultBranch = gitEvent .Project .DefaultBranch
304+ event .HeadBranch = gitEvent .Ref
305+ event .BaseBranch = gitEvent .Ref
306+ if gitEvent .Commits [lastCommitIdx ] != nil {
307+ event .SHA = gitEvent .Commits [lastCommitIdx ].ID
308+ event .SHAURL = gitEvent .Commits [lastCommitIdx ].URL
309+ event .SHATitle = gitEvent .Commits [lastCommitIdx ].Title
310+ }
303311 event .TriggerTarget = triggertype .Push
304312 default :
305313 return fmt .Errorf ("unsupported GitLab event type: %T" , gitEvent )
@@ -578,55 +586,94 @@ func (p *GiteaParser) ParsePayload(eventType string, body []byte) (any, error) {
578586func (p * GiteaParser ) PopulateEvent (event * info.Event , parsedEvent any ) error {
579587 switch gitEvent := parsedEvent .(type ) {
580588 case * giteaStructs.PullRequestPayload :
581- event .Organization = gitEvent .Repository .Owner .UserName
582- event .Repository = gitEvent .Repository .Name
583- event .Sender = gitEvent .Sender .UserName
584- event .URL = gitEvent .Repository .HTMLURL
585- event .SHA = gitEvent .PullRequest .Head .Sha
586- event .SHAURL = fmt .Sprintf ("%s/commit/%s" , gitEvent .PullRequest .HTMLURL , gitEvent .PullRequest .Head .Sha )
587- event .HeadBranch = gitEvent .PullRequest .Head .Ref
588- event .BaseBranch = gitEvent .PullRequest .Base .Ref
589- event .HeadURL = gitEvent .PullRequest .Head .Repository .HTMLURL
590- event .BaseURL = gitEvent .PullRequest .Base .Repository .HTMLURL
591- event .PullRequestNumber = int (gitEvent .Index )
592- event .PullRequestTitle = gitEvent .PullRequest .Title
593- event .DefaultBranch = gitEvent .Repository .DefaultBranch
589+ if gitEvent .Repository != nil {
590+ if gitEvent .Repository .Owner != nil {
591+ event .Organization = gitEvent .Repository .Owner .UserName
592+ }
593+ event .Repository = gitEvent .Repository .Name
594+ event .URL = gitEvent .Repository .HTMLURL
595+ event .DefaultBranch = gitEvent .Repository .DefaultBranch
596+ }
597+ if gitEvent .Sender != nil {
598+ event .Sender = gitEvent .Sender .UserName
599+ }
600+ if gitEvent .PullRequest != nil {
601+ if gitEvent .PullRequest .Head != nil {
602+ event .SHA = gitEvent .PullRequest .Head .Sha
603+ if gitEvent .PullRequest .HTMLURL != "" && gitEvent .PullRequest .Head .Sha != "" {
604+ event .SHAURL = fmt .Sprintf ("%s/commit/%s" , gitEvent .PullRequest .HTMLURL , gitEvent .PullRequest .Head .Sha )
605+ }
606+ event .HeadBranch = gitEvent .PullRequest .Head .Ref
607+ if gitEvent .PullRequest .Head .Repository != nil {
608+ event .HeadURL = gitEvent .PullRequest .Head .Repository .HTMLURL
609+ }
610+ }
611+ if gitEvent .PullRequest .Base != nil {
612+ event .BaseBranch = gitEvent .PullRequest .Base .Ref
613+ if gitEvent .PullRequest .Base .Repository != nil {
614+ event .BaseURL = gitEvent .PullRequest .Base .Repository .HTMLURL
615+ }
616+ }
617+ event .PullRequestNumber = int (gitEvent .Index )
618+ event .PullRequestTitle = gitEvent .PullRequest .Title
619+ for _ , label := range gitEvent .PullRequest .Labels {
620+ if label != nil {
621+ event .PullRequestLabel = append (event .PullRequestLabel , label .Name )
622+ }
623+ }
624+ }
594625 event .TriggerTarget = triggertype .PullRequest
595626 if gitEvent .Action == giteaStructs .HookIssueClosed {
596627 event .TriggerTarget = triggertype .PullRequestClosed
597628 }
598- for _ , label := range gitEvent .PullRequest .Labels {
599- event .PullRequestLabel = append (event .PullRequestLabel , label .Name )
600- }
601629 case * giteaStructs.PushPayload :
602- event .Organization = gitEvent .Repo .Owner .UserName
603- event .Repository = gitEvent .Repo .Name
604- event .Sender = gitEvent .Sender .UserName
605- event .URL = gitEvent .Repo .HTMLURL
606- event .SHA = gitEvent .HeadCommit .ID
607- if event .SHA == "" {
630+ if gitEvent .Repo != nil {
631+ if gitEvent .Repo .Owner != nil {
632+ event .Organization = gitEvent .Repo .Owner .UserName
633+ }
634+ event .Repository = gitEvent .Repo .Name
635+ event .URL = gitEvent .Repo .HTMLURL
636+ event .HeadURL = gitEvent .Repo .HTMLURL
637+ event .BaseURL = gitEvent .Repo .HTMLURL
638+ event .DefaultBranch = gitEvent .Repo .DefaultBranch
639+ }
640+ if gitEvent .Sender != nil {
641+ event .Sender = gitEvent .Sender .UserName
642+ }
643+ if gitEvent .HeadCommit != nil {
644+ event .SHA = gitEvent .HeadCommit .ID
645+ if event .SHA == "" {
646+ event .SHA = gitEvent .Before
647+ }
648+ event .SHAURL = gitEvent .HeadCommit .URL
649+ event .SHATitle = gitEvent .HeadCommit .Message
650+ } else if gitEvent .Before != "" {
608651 event .SHA = gitEvent .Before
609652 }
610- event .SHAURL = gitEvent .HeadCommit .URL
611- event .SHATitle = gitEvent .HeadCommit .Message
612653 event .HeadBranch = gitEvent .Ref
613654 event .BaseBranch = gitEvent .Ref
614- event .HeadURL = gitEvent .Repo .HTMLURL
615- event .BaseURL = gitEvent .Repo .HTMLURL
616- event .DefaultBranch = gitEvent .Repo .DefaultBranch
617655 event .TriggerTarget = triggertype .Push
618656 case * giteaStructs.IssueCommentPayload :
619- if gitEvent .Issue .PullRequest == nil {
657+ issue := gitEvent .Issue
658+ if issue == nil || issue .PullRequest == nil {
620659 return fmt .Errorf ("issue comment is not from a pull request" )
621660 }
622- event .Organization = gitEvent .Repository .Owner .UserName
623- event .Repository = gitEvent .Repository .Name
624- event .Sender = gitEvent .Sender .UserName
625- event .URL = gitEvent .Repository .HTMLURL
626- event .DefaultBranch = gitEvent .Repository .DefaultBranch
661+ if gitEvent .Repository != nil {
662+ if gitEvent .Repository .Owner != nil {
663+ event .Organization = gitEvent .Repository .Owner .UserName
664+ }
665+ event .Repository = gitEvent .Repository .Name
666+ event .URL = gitEvent .Repository .HTMLURL
667+ event .DefaultBranch = gitEvent .Repository .DefaultBranch
668+ }
669+ if gitEvent .Sender != nil {
670+ event .Sender = gitEvent .Sender .UserName
671+ }
627672 event .TriggerTarget = triggertype .PullRequest
628- event .TriggerComment = gitEvent .Comment .Body
629- event .PullRequestNumber = extractPullRequestNumber (gitEvent .Issue .URL )
673+ if gitEvent .Comment != nil {
674+ event .TriggerComment = gitEvent .Comment .Body
675+ }
676+ event .PullRequestNumber = extractPullRequestNumber (issue .URL )
630677 default :
631678 return fmt .Errorf ("unsupported Gitea event type: %T" , gitEvent )
632679 }
0 commit comments