code.gitea.io/gitea@v1.21.7/routers/web/user/task.go (about) 1 // Copyright 2020 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package user 5 6 import ( 7 "net/http" 8 "strconv" 9 10 admin_model "code.gitea.io/gitea/models/admin" 11 "code.gitea.io/gitea/modules/context" 12 "code.gitea.io/gitea/modules/json" 13 ) 14 15 // TaskStatus returns task's status 16 func TaskStatus(ctx *context.Context) { 17 task, opts, err := admin_model.GetMigratingTaskByID(ctx, ctx.ParamsInt64("task"), ctx.Doer.ID) 18 if err != nil { 19 if admin_model.IsErrTaskDoesNotExist(err) { 20 ctx.JSON(http.StatusNotFound, map[string]any{ 21 "error": "task `" + strconv.FormatInt(ctx.ParamsInt64("task"), 10) + "` does not exist", 22 }) 23 return 24 } 25 ctx.JSON(http.StatusInternalServerError, map[string]any{ 26 "err": err, 27 }) 28 return 29 } 30 31 message := task.Message 32 33 if task.Message != "" && task.Message[0] == '{' { 34 // assume message is actually a translatable string 35 var translatableMessage admin_model.TranslatableMessage 36 if err := json.Unmarshal([]byte(message), &translatableMessage); err != nil { 37 translatableMessage = admin_model.TranslatableMessage{ 38 Format: "migrate.migrating_failed.error", 39 Args: []any{task.Message}, 40 } 41 } 42 message = ctx.Tr(translatableMessage.Format, translatableMessage.Args...) 43 } 44 45 ctx.JSON(http.StatusOK, map[string]any{ 46 "status": task.Status, 47 "message": message, 48 "repo-id": task.RepoID, 49 "repo-name": opts.RepoName, 50 "start": task.StartTime, 51 "end": task.EndTime, 52 }) 53 }