ae325d4bec
Signed-off-by: Martijn van der Kleijn <martijn.niji@gmail.com>
44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
// Copyright 2024 The Forgejo Authors. All rights reserved.
|
|
// Use of this source code is governed by a MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// Use of this source code is governed by a MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package forgejo
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
)
|
|
|
|
// ListOptions options for using Forgejo's API pagination
|
|
type ListOptions struct {
|
|
// Setting Page to -1 disables pagination on endpoints that support it.
|
|
// Page numbering starts at 1.
|
|
Page int
|
|
// The default value depends on the server config DEFAULT_PAGING_NUM
|
|
// The highest valid value depends on the server config MAX_RESPONSE_ITEMS
|
|
PageSize int
|
|
}
|
|
|
|
func (o ListOptions) getURLQuery() url.Values {
|
|
query := make(url.Values)
|
|
query.Add("page", fmt.Sprintf("%d", o.Page))
|
|
query.Add("limit", fmt.Sprintf("%d", o.PageSize))
|
|
|
|
return query
|
|
}
|
|
|
|
// setDefaults applies default pagination options.
|
|
// If .Page is set to -1, it will disable pagination.
|
|
// WARNING: This function is not idempotent, make sure to never call this method twice!
|
|
func (o *ListOptions) setDefaults() {
|
|
if o.Page < 0 {
|
|
o.Page, o.PageSize = 0, 0
|
|
return
|
|
} else if o.Page == 0 {
|
|
o.Page = 1
|
|
}
|
|
}
|