mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-25 23:05:39 +03:00
improve the releases api paging (#5831)
* improve the releases api paging * add max limit on API paging
This commit is contained in:
parent
9a137faaaf
commit
892bfd0b19
5 changed files with 29 additions and 2 deletions
|
@ -622,6 +622,8 @@ MIN_INTERVAL = 10m
|
|||
ENABLE_SWAGGER = true
|
||||
; Max number of items in a page
|
||||
MAX_RESPONSE_ITEMS = 50
|
||||
; Default paging number of api
|
||||
DEFAULT_PAGING_NUM = 30
|
||||
|
||||
[i18n]
|
||||
LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR
|
||||
|
|
|
@ -325,6 +325,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
|
|||
|
||||
- `ENABLE_SWAGGER`: **true**: Enables /api/swagger, /api/v1/swagger etc. endpoints. True or false; default is true.
|
||||
- `MAX_RESPONSE_ITEMS`: **50**: Max number of items in a page.
|
||||
- `DEFAULT_PAGING_NUM`: **30**: Default paging number of api.
|
||||
|
||||
## i18n (`i18n`)
|
||||
|
||||
|
|
|
@ -194,7 +194,13 @@ menu:
|
|||
- `PULL`: **300**: 内部仓库间拉取的超时时间,单位秒
|
||||
- `GC`: **60**: git仓库GC的超时时间,单位秒
|
||||
|
||||
## markup (`markup`)
|
||||
## API (`api`)
|
||||
|
||||
- `ENABLE_SWAGGER`: **true**: 是否启用swagger路由 /api/swagger, /api/v1/swagger etc. endpoints. True 或 false; 默认是 true.
|
||||
- `MAX_RESPONSE_ITEMS`: **50**: 一个页面最大的项目数。
|
||||
- `DEFAULT_PAGING_NUM`: **30**: API中默认分页条数。
|
||||
|
||||
## Markup (`markup`)
|
||||
|
||||
外部渲染工具支持,你可以用你熟悉的文档渲染工具. 比如一下将新增一个名字为 `asciidoc` 的渲染工具which is followed `markup.` ini section. And there are some config items below.
|
||||
|
||||
|
|
|
@ -557,9 +557,11 @@ var (
|
|||
API = struct {
|
||||
EnableSwagger bool
|
||||
MaxResponseItems int
|
||||
DefaultPagingNum int
|
||||
}{
|
||||
EnableSwagger: true,
|
||||
MaxResponseItems: 50,
|
||||
DefaultPagingNum: 30,
|
||||
}
|
||||
|
||||
U2F = struct {
|
||||
|
|
|
@ -7,6 +7,7 @@ package repo
|
|||
import (
|
||||
"code.gitea.io/gitea/models"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
|
||||
api "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
@ -55,6 +56,20 @@ func GetRelease(ctx *context.APIContext) {
|
|||
ctx.JSON(200, release.APIFormat())
|
||||
}
|
||||
|
||||
func getPagesInfo(ctx *context.APIContext) (int, int) {
|
||||
page := ctx.QueryInt("page")
|
||||
if page == 0 {
|
||||
page = 1
|
||||
}
|
||||
perPage := ctx.QueryInt("per_page")
|
||||
if perPage == 0 {
|
||||
perPage = setting.API.DefaultPagingNum
|
||||
} else if perPage > setting.API.MaxResponseItems {
|
||||
perPage = setting.API.MaxResponseItems
|
||||
}
|
||||
return page, perPage
|
||||
}
|
||||
|
||||
// ListReleases list a repository's releases
|
||||
func ListReleases(ctx *context.APIContext) {
|
||||
// swagger:operation GET /repos/{owner}/{repo}/releases repository repoListReleases
|
||||
|
@ -76,10 +91,11 @@ func ListReleases(ctx *context.APIContext) {
|
|||
// responses:
|
||||
// "200":
|
||||
// "$ref": "#/responses/ReleaseList"
|
||||
page, limit := getPagesInfo(ctx)
|
||||
releases, err := models.GetReleasesByRepoID(ctx.Repo.Repository.ID, models.FindReleasesOptions{
|
||||
IncludeDrafts: ctx.Repo.AccessMode >= models.AccessModeWrite,
|
||||
IncludeTags: false,
|
||||
}, 1, 2147483647)
|
||||
}, page, limit)
|
||||
if err != nil {
|
||||
ctx.Error(500, "GetReleasesByRepoID", err)
|
||||
return
|
||||
|
|
Loading…
Reference in a new issue