func()

in pkg/event_processor/github/github.go [72:132]


func (p *EventProcessor) processMergeEvent(ctx context.Context, body []byte, ns string) (*event_processor.EventInfo, error) {
	gitHubEvent := &github.PullRequestEvent{}
	if err := json.Unmarshal(body, gitHubEvent); err != nil {
		return nil, fmt.Errorf("failed to unmarshal GitHub event: %w", err)
	}

	if gitHubEvent.Repo == nil || gitHubEvent.Repo.FullName == nil || *gitHubEvent.Repo.FullName == "" {
		return nil, errors.New("github repository path empty")
	}

	if gitHubEvent.PullRequest == nil ||
		gitHubEvent.PullRequest.Base == nil ||
		gitHubEvent.PullRequest.Base.Ref == nil ||
		*gitHubEvent.PullRequest.Base.Ref == "" {
		return nil, errors.New("github target branch empty")
	}

	if gitHubEvent.GetPullRequest().GetHead() == nil {
		return nil, errors.New("github head branch empty")
	}

	repoPath := event_processor.ConvertRepositoryPath(*gitHubEvent.Repo.FullName)

	codebase, err := event_processor.GetCodebaseByRepoPath(ctx, p.ksClient, ns, repoPath)
	if err != nil {
		return nil, fmt.Errorf("failed to get codebase %s for GitHub IssueCommentEvent: %w", repoPath, err)
	}

	gitServerToken, err := event_processor.GetGitServerToken(ctx, p.ksClient, codebase)
	if err != nil {
		return nil, fmt.Errorf("failed to get git server token for GitHub PullRequestEvent: %w", err)
	}

	client := p.gitHubClient(ctx, gitServerToken)

	commitMessage, err := p.getCommitMessage(
		ctx,
		client,
		gitHubEvent.GetRepo().GetOwner().GetLogin(),
		gitHubEvent.GetRepo().GetName(),
		gitHubEvent.GetNumber(),
	)
	if err != nil {
		return nil, err
	}

	return &event_processor.EventInfo{
		GitProvider:  event_processor.GitProviderGitHub,
		RepoPath:     repoPath,
		TargetBranch: *gitHubEvent.PullRequest.Base.Ref,
		Codebase:     codebase,
		Type:         event_processor.EventTypeMerge,
		PullRequest: &event_processor.PullRequest{
			HeadRef:           gitHubEvent.GetPullRequest().GetHead().GetRef(),
			HeadSha:           gitHubEvent.GetPullRequest().GetHead().GetSHA(),
			Title:             gitHubEvent.GetPullRequest().GetTitle(),
			ChangeNumber:      gitHubEvent.GetNumber(),
			LastCommitMessage: commitMessage,
		},
	}, nil
}