578ab6a3c9
Refs: https://codeberg.org/forgejo/forgejo/pulls/2191 (cherry picked from commit 1e89dd95b9d24377bf50a952c323d9e8b6895bf3) (cherry picked from commit fecc14a16c0f85f84127196609b7eafcb6605e80) (cherry picked from commit b4509aa4c79573be973feae96ae808c195637634) (cherry picked from commit 6fdf3b2ad1a3411e6f1f64cb977ee2f158968d1c)
32 lines
864 B
Go
32 lines
864 B
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package shared
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
|
|
actions_model "code.gitea.io/gitea/models/actions"
|
|
"code.gitea.io/gitea/modules/context"
|
|
"code.gitea.io/gitea/modules/util"
|
|
)
|
|
|
|
// RegistrationToken is a string used to register a runner with a server
|
|
// swagger:response RegistrationToken
|
|
type RegistrationToken struct {
|
|
Token string `json:"token"`
|
|
}
|
|
|
|
func GetRegistrationToken(ctx *context.APIContext, ownerID, repoID int64) {
|
|
token, err := actions_model.GetLatestRunnerToken(ctx, ownerID, repoID)
|
|
if errors.Is(err, util.ErrNotExist) || (token != nil && !token.IsActive) {
|
|
token, err = actions_model.NewRunnerToken(ctx, ownerID, repoID)
|
|
}
|
|
if err != nil {
|
|
ctx.InternalServerError(err)
|
|
return
|
|
}
|
|
|
|
ctx.JSON(http.StatusOK, RegistrationToken{Token: token.Token})
|
|
}
|