mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2026-07-25 19:07:59 +00:00
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/13143 The details of the refactor are in [a separate branch](https://codeberg.org/limiting-factor/forgejo/commits/branch/wip-api-context-accessors-save) which details how it was done. This pull request contains a squash of those commits rebased on top of the current Forgejo branch, which involved conflict resolution. Given the magnitude of the change, there is a high chance that a large number of future pull requests merged in Forgejo will create conflicts. They will be dealt with in the same way as chore: refactor orgAssignment to two separate middlewares (#13155). ## Review The only risk I can think of is a getter/setter implementation being incorrectly implemented. This is probably where a detailed review is most needed, in the `services/context/api.go` file. To not increase the size of the pull request, the `GetX()` accessors were preserved although they are redundant with `X()`. They will be removed in a followup pull request. ## Backporting strategy. Cherry-picking the commit to v15 has a significant amount of conflicts in 8 files out of 111. ``` unmerged routers/api/v1/activitypub/repository.go unmerged routers/api/v1/admin/user.go unmerged routers/api/v1/api.go unmerged routers/api/v1/org/team.go unmerged routers/api/v1/repo/action.go unmerged routers/api/v1/repo/pull.go unmerged routers/api/v1/user/follower.go unmerged services/context/api.go ``` Instead of resolving them, I think it is easier and safer to repeat the [refactor steps](https://codeberg.org/limiting-factor/forgejo/commits/branch/wip-api-context-accessors-save) in v15. I also think it is worth the effort since it will avoid trivial backport conflicts on over 100 files. ## Context This is a followup pull request discussed originally at https://codeberg.org/forgejo/forgejo/pulls/12512 Co-authored-by: limiting-factor <limiting-factor@posteo.com> Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/13213 Reviewed-by: limiting-factor <limiting-factor@noreply.codeberg.org> Reviewed-by: Mathieu Fenniak <mfenniak@noreply.codeberg.org>
165 lines
4.7 KiB
Go
165 lines
4.7 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package user
|
|
|
|
import (
|
|
"forgejo.org/routers/api/v1/shared"
|
|
"forgejo.org/services/context"
|
|
)
|
|
|
|
// GetRegistrationToken returns a token to register user-level runners
|
|
//
|
|
// Deprecated: This operation has been deprecated in Forgejo 15. Use the web UI or RegisterRunner instead.
|
|
func GetRegistrationToken(ctx *context.APIContext) {
|
|
// swagger:operation GET /user/actions/runners/registration-token user userGetRunnerRegistrationToken
|
|
// ---
|
|
// summary: Get the user's runner registration token
|
|
// description: >
|
|
// This operation has been deprecated in Forgejo 15.
|
|
// Use the web UI or [`/user/actions/runners`](#/user/registerUserRunner) instead.
|
|
// deprecated: true
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// responses:
|
|
// "200":
|
|
// "$ref": "#/responses/RegistrationToken"
|
|
// "401":
|
|
// "$ref": "#/responses/unauthorized"
|
|
// "403":
|
|
// "$ref": "#/responses/forbidden"
|
|
|
|
shared.GetRegistrationToken(ctx, ctx.Doer().ID, 0)
|
|
}
|
|
|
|
// SearchActionRunJobs returns a list of actions jobs filtered by the provided parameters
|
|
func SearchActionRunJobs(ctx *context.APIContext) {
|
|
// swagger:operation GET /user/actions/runners/jobs user userSearchRunJobs
|
|
// ---
|
|
// summary: Search for user's action jobs according filter conditions
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// - name: labels
|
|
// in: query
|
|
// description: a comma separated list of run job labels to search for
|
|
// type: string
|
|
// responses:
|
|
// "200":
|
|
// "$ref": "#/responses/RunJobList"
|
|
// "401":
|
|
// "$ref": "#/responses/unauthorized"
|
|
// "403":
|
|
// "$ref": "#/responses/forbidden"
|
|
shared.GetActionRunJobs(ctx, ctx.Doer().ID, 0)
|
|
}
|
|
|
|
// ListRunners returns the user's runners
|
|
func ListRunners(ctx *context.APIContext) {
|
|
// swagger:operation GET /user/actions/runners user getUserRunners
|
|
// ---
|
|
// summary: Get the user's runners
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// - name: visible
|
|
// in: query
|
|
// description: whether to include all visible runners (true) or only those that are directly owned by the user (false)
|
|
// type: boolean
|
|
// - name: page
|
|
// in: query
|
|
// description: page number of results to return (1-based)
|
|
// type: integer
|
|
// - name: limit
|
|
// in: query
|
|
// description: page size of results
|
|
// type: integer
|
|
// responses:
|
|
// "200":
|
|
// "$ref": "#/responses/ActionRunnerList"
|
|
// "400":
|
|
// "$ref": "#/responses/error"
|
|
// "401":
|
|
// "$ref": "#/responses/unauthorized"
|
|
// "404":
|
|
// "$ref": "#/responses/notFound"
|
|
shared.ListRunners(ctx, ctx.Doer().ID, 0)
|
|
}
|
|
|
|
// GetRunner gets a particular runner that belongs to the user
|
|
func GetRunner(ctx *context.APIContext) {
|
|
// swagger:operation GET /user/actions/runners/{runner_id} user getUserRunner
|
|
// ---
|
|
// summary: Get a particular runner that belongs to the user
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// - name: runner_id
|
|
// in: path
|
|
// description: ID of the runner
|
|
// type: string
|
|
// required: true
|
|
// responses:
|
|
// "200":
|
|
// "$ref": "#/responses/ActionRunner"
|
|
// "400":
|
|
// "$ref": "#/responses/error"
|
|
// "401":
|
|
// "$ref": "#/responses/unauthorized"
|
|
// "404":
|
|
// "$ref": "#/responses/notFound"
|
|
shared.GetRunner(ctx, ctx.Doer().ID, 0, ctx.ParamsInt64("runner_id"))
|
|
}
|
|
|
|
// RegisterRunner registers a new user-level runner
|
|
func RegisterRunner(ctx *context.APIContext) {
|
|
// swagger:operation POST /user/actions/runners user registerUserRunner
|
|
// ---
|
|
// summary: Register a new user-level runner
|
|
// consumes:
|
|
// - application/json
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// - name: body
|
|
// in: body
|
|
// schema:
|
|
// "$ref": "#/definitions/RegisterRunnerOptions"
|
|
// responses:
|
|
// "201":
|
|
// "$ref": "#/responses/RegisterRunnerResponse"
|
|
// "400":
|
|
// "$ref": "#/responses/error"
|
|
// "401":
|
|
// "$ref": "#/responses/unauthorized"
|
|
// "404":
|
|
// "$ref": "#/responses/notFound"
|
|
|
|
shared.RegisterRunner(ctx, ctx.Doer().ID, 0)
|
|
}
|
|
|
|
// DeleteRunner deletes a particular user-level runner
|
|
func DeleteRunner(ctx *context.APIContext) {
|
|
// swagger:operation DELETE /user/actions/runners/{runner_id} user deleteUserRunner
|
|
// ---
|
|
// summary: Delete a particular user-level runner
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// - name: runner_id
|
|
// in: path
|
|
// description: ID of the runner
|
|
// type: string
|
|
// required: true
|
|
// responses:
|
|
// "204":
|
|
// description: runner has been deleted
|
|
// "400":
|
|
// "$ref": "#/responses/error"
|
|
// "401":
|
|
// "$ref": "#/responses/unauthorized"
|
|
// "404":
|
|
// "$ref": "#/responses/notFound"
|
|
shared.DeleteRunner(ctx, ctx.Doer().ID, 0, ctx.ParamsInt64("runner_id"))
|
|
}
|