summaryrefslogtreecommitdiffstats
path: root/routers/api/v1/repo/branch.go
diff options
context:
space:
mode:
author6543 <6543@obermui.de>2021-02-03 20:06:13 +0100
committerGitHub <noreply@github.com>2021-02-03 20:06:13 +0100
commit0d1444751f755c624ffb4c56cb0020ce7a083c77 (patch)
treec00ab7d4a1b120f4fb4a70db134e5d712bef91ed /routers/api/v1/repo/branch.go
parentc295a27d4a8ef9a3a75280306e1ed94daa3b001d (diff)
downloadgitea-0d1444751f755c624ffb4c56cb0020ce7a083c77.tar.gz
gitea-0d1444751f755c624ffb4c56cb0020ce7a083c77.zip
[API] Add pagination to ListBranches (#14524)
* make PaginateUserSlice generic -> PaginateSlice * Add pagination to ListBranches * add skip, limit to Repository.GetBranches() * Move routers/api/v1/utils/utils PaginateSlice -> modules/util/paginate.go * repo_module.GetBranches paginate * fix & rename & more logging * better description Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: a1012112796 <1012112796@qq.com>
Diffstat (limited to 'routers/api/v1/repo/branch.go')
-rw-r--r--routers/api/v1/repo/branch.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/routers/api/v1/repo/branch.go b/routers/api/v1/repo/branch.go
index 790464c8bc..451fdcf516 100644
--- a/routers/api/v1/repo/branch.go
+++ b/routers/api/v1/repo/branch.go
@@ -17,6 +17,7 @@ import (
repo_module "code.gitea.io/gitea/modules/repository"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/web"
+ "code.gitea.io/gitea/routers/api/v1/utils"
pull_service "code.gitea.io/gitea/services/pull"
repo_service "code.gitea.io/gitea/services/repository"
)
@@ -284,11 +285,21 @@ func ListBranches(ctx *context.APIContext) {
// description: name of the repo
// type: string
// required: true
+ // - 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/BranchList"
- branches, err := repo_module.GetBranches(ctx.Repo.Repository)
+ listOptions := utils.GetListOptions(ctx)
+ skip, _ := listOptions.GetStartEnd()
+ branches, totalNumOfBranches, err := repo_module.GetBranches(ctx.Repo.Repository, skip, listOptions.PageSize)
if err != nil {
ctx.Error(http.StatusInternalServerError, "GetBranches", err)
return
@@ -313,6 +324,9 @@ func ListBranches(ctx *context.APIContext) {
}
}
+ ctx.SetLinkHeader(int(totalNumOfBranches), listOptions.PageSize)
+ ctx.Header().Set("X-Total-Count", fmt.Sprintf("%d", totalNumOfBranches))
+ ctx.Header().Set("Access-Control-Expose-Headers", "X-Total-Count, Link")
ctx.JSON(http.StatusOK, &apiBranches)
}