Files

71 lines
1.9 KiB
Go
Raw Permalink Normal View History

2018-11-28 21:17:09 +00:00
// Copyright 2018 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
2018-11-28 21:17:09 +00:00
package repo
import (
2019-12-20 18:07:12 +01:00
"net/http"
"code.gitea.io/gitea/services/context"
files_service "code.gitea.io/gitea/services/repository/files"
2018-11-28 21:17:09 +00:00
)
// GetTree get the tree of a repository.
func GetTree(ctx *context.APIContext) {
2019-01-24 19:13:30 +01:00
// swagger:operation GET /repos/{owner}/{repo}/git/trees/{sha} repository GetTree
// ---
// summary: Gets the tree of a repository.
// produces:
// - application/json
// parameters:
// - name: owner
// in: path
// description: owner of the repo
// type: string
// required: true
// - name: repo
// in: path
// description: name of the repo
// type: string
// required: true
// - name: sha
// in: path
// description: sha of the commit
// type: string
// required: true
// - name: recursive
// in: query
// description: show all directories and files
// required: false
// type: boolean
// - name: page
// in: query
// description: page number; the 'truncated' field in the response will be true if there are still more items after this page, false if the last page
// required: false
// type: integer
// - name: per_page
// in: query
// description: number of items per page
// required: false
// type: integer
2019-01-24 19:13:30 +01:00
// responses:
// "200":
// "$ref": "#/responses/GitTreeResponse"
2019-12-20 18:07:12 +01:00
// "400":
// "$ref": "#/responses/error"
// "404":
// "$ref": "#/responses/notFound"
2024-12-24 21:47:45 +08:00
sha := ctx.PathParam("sha")
2018-11-28 21:17:09 +00:00
if len(sha) == 0 {
2025-02-17 14:13:17 +08:00
ctx.APIError(http.StatusBadRequest, "sha not provided")
2018-11-28 21:17:09 +00:00
return
}
if tree, err := files_service.GetTreeBySHA(ctx, ctx.Repo.Repository, ctx.Repo.GitRepo, sha, ctx.FormInt("page"), ctx.FormInt("per_page"), ctx.FormBool("recursive")); err != nil {
2025-02-17 14:13:17 +08:00
ctx.APIError(http.StatusBadRequest, err.Error())
2018-11-28 21:17:09 +00:00
} else {
ctx.SetTotalCountHeader(int64(tree.TotalCount))
2019-12-20 18:07:12 +01:00
ctx.JSON(http.StatusOK, tree)
2018-11-28 21:17:09 +00:00
}
}