1// Copyright 2020 The Gitea Authors. All rights reserved. 2// Use of this source code is governed by a MIT-style 3// license that can be found in the LICENSE file. 4 5package convert 6 7import ( 8 "code.gitea.io/gitea/models" 9 user_model "code.gitea.io/gitea/models/user" 10 api "code.gitea.io/gitea/modules/structs" 11) 12 13// ToCommitStatus converts models.CommitStatus to api.CommitStatus 14func ToCommitStatus(status *models.CommitStatus) *api.CommitStatus { 15 apiStatus := &api.CommitStatus{ 16 Created: status.CreatedUnix.AsTime(), 17 Updated: status.CreatedUnix.AsTime(), 18 State: status.State, 19 TargetURL: status.TargetURL, 20 Description: status.Description, 21 ID: status.Index, 22 URL: status.APIURL(), 23 Context: status.Context, 24 } 25 26 if status.CreatorID != 0 { 27 creator, _ := user_model.GetUserByID(status.CreatorID) 28 apiStatus.Creator = ToUser(creator, nil) 29 } 30 31 return apiStatus 32} 33 34// ToCombinedStatus converts List of CommitStatus to a CombinedStatus 35func ToCombinedStatus(statuses []*models.CommitStatus, repo *api.Repository) *api.CombinedStatus { 36 37 if len(statuses) == 0 { 38 return nil 39 } 40 41 retStatus := &api.CombinedStatus{ 42 SHA: statuses[0].SHA, 43 TotalCount: len(statuses), 44 Repository: repo, 45 URL: "", 46 } 47 48 retStatus.Statuses = make([]*api.CommitStatus, 0, len(statuses)) 49 for _, status := range statuses { 50 retStatus.Statuses = append(retStatus.Statuses, ToCommitStatus(status)) 51 if status.State.NoBetterThan(retStatus.State) { 52 retStatus.State = status.State 53 } 54 } 55 56 return retStatus 57} 58