summaryrefslogtreecommitdiffstats
path: root/routers/api/v1/repo/key.go
diff options
context:
space:
mode:
author6543 <6543@obermui.de>2021-08-12 14:43:08 +0200
committerGitHub <noreply@github.com>2021-08-12 14:43:08 +0200
commit2289580bb7ef8dfa4124c2b3bfb89897dbb35f46 (patch)
treee68aae604bb3d738b44156504a1415adaf042c68 /routers/api/v1/repo/key.go
parentca13e1d56c561f72cf8ad251fe61b1898abfec51 (diff)
downloadgitea-2289580bb7ef8dfa4124c2b3bfb89897dbb35f46.tar.gz
gitea-2289580bb7ef8dfa4124c2b3bfb89897dbb35f46.zip
[API] generalize list header (#16551)
* Add info about list endpoints to CONTRIBUTING.md * Let all list endpoints return X-Total-Count header * Add TODOs for GetCombinedCommitStatusByRef * Fix models/issue_stopwatch.go * Rrefactor models.ListDeployKeys * Introduce helper func and use them for SetLinkHeader related func
Diffstat (limited to 'routers/api/v1/repo/key.go')
-rw-r--r--routers/api/v1/repo/key.go24
1 files changed, 14 insertions, 10 deletions
diff --git a/routers/api/v1/repo/key.go b/routers/api/v1/repo/key.go
index 903cef7104..98ee2b4de5 100644
--- a/routers/api/v1/repo/key.go
+++ b/routers/api/v1/repo/key.go
@@ -75,26 +75,29 @@ func ListDeployKeys(ctx *context.APIContext) {
// "200":
// "$ref": "#/responses/DeployKeyList"
- var keys []*models.DeployKey
- var err error
+ opts := &models.ListDeployKeysOptions{
+ ListOptions: utils.GetListOptions(ctx),
+ RepoID: ctx.Repo.Repository.ID,
+ KeyID: ctx.FormInt64("key_id"),
+ Fingerprint: ctx.FormString("fingerprint"),
+ }
- fingerprint := ctx.FormString("fingerprint")
- keyID := ctx.FormInt64("key_id")
- if fingerprint != "" || keyID != 0 {
- keys, err = models.SearchDeployKeys(ctx.Repo.Repository.ID, keyID, fingerprint)
- } else {
- keys, err = models.ListDeployKeys(ctx.Repo.Repository.ID, utils.GetListOptions(ctx))
+ keys, err := models.ListDeployKeys(opts)
+ if err != nil {
+ ctx.InternalServerError(err)
+ return
}
+ count, err := models.CountDeployKeys(opts)
if err != nil {
- ctx.Error(http.StatusInternalServerError, "ListDeployKeys", err)
+ ctx.InternalServerError(err)
return
}
apiLink := composeDeployKeysAPILink(ctx.Repo.Owner.Name + "/" + ctx.Repo.Repository.Name)
apiKeys := make([]*api.DeployKey, len(keys))
for i := range keys {
- if err = keys[i].GetContent(); err != nil {
+ if err := keys[i].GetContent(); err != nil {
ctx.Error(http.StatusInternalServerError, "GetContent", err)
return
}
@@ -104,6 +107,7 @@ func ListDeployKeys(ctx *context.APIContext) {
}
}
+ ctx.SetTotalCountHeader(count)
ctx.JSON(http.StatusOK, &apiKeys)
}