1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // Copyright 2020 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package convert
-
- import (
- "context"
-
- git_model "code.gitea.io/gitea/models/git"
- user_model "code.gitea.io/gitea/models/user"
- api "code.gitea.io/gitea/modules/structs"
- )
-
- // ToCommitStatus converts git_model.CommitStatus to api.CommitStatus
- func ToCommitStatus(ctx context.Context, status *git_model.CommitStatus) *api.CommitStatus {
- apiStatus := &api.CommitStatus{
- Created: status.CreatedUnix.AsTime(),
- Updated: status.CreatedUnix.AsTime(),
- State: status.State,
- TargetURL: status.TargetURL,
- Description: status.Description,
- ID: status.Index,
- URL: status.APIURL(ctx),
- Context: status.Context,
- }
-
- if status.CreatorID != 0 {
- creator, _ := user_model.GetUserByID(ctx, status.CreatorID)
- apiStatus.Creator = ToUser(ctx, creator, nil)
- }
-
- return apiStatus
- }
-
- // ToCombinedStatus converts List of CommitStatus to a CombinedStatus
- func ToCombinedStatus(ctx context.Context, statuses []*git_model.CommitStatus, repo *api.Repository) *api.CombinedStatus {
- if len(statuses) == 0 {
- return nil
- }
-
- retStatus := &api.CombinedStatus{
- SHA: statuses[0].SHA,
- TotalCount: len(statuses),
- Repository: repo,
- URL: "",
- }
-
- retStatus.Statuses = make([]*api.CommitStatus, 0, len(statuses))
- for _, status := range statuses {
- retStatus.Statuses = append(retStatus.Statuses, ToCommitStatus(ctx, status))
- if retStatus.State == "" || status.State.NoBetterThan(retStatus.State) {
- retStatus.State = status.State
- }
- }
- // According to https://docs.github.com/en/rest/commits/statuses?apiVersion=2022-11-28#get-the-combined-status-for-a-specific-reference
- // > Additionally, a combined state is returned. The state is one of:
- // > failure if any of the contexts report as error or failure
- // > pending if there are no statuses or a context is pending
- // > success if the latest status for all contexts is success
- if retStatus.State.IsError() {
- retStatus.State = api.CommitStatusFailure
- }
-
- return retStatus
- }
|