gatus/controller/handler/util.go

49 lines
1.1 KiB
Go
Raw Normal View History

2021-09-13 00:39:09 +02:00
package handler
import (
"net/http"
"strconv"
2021-08-13 03:54:23 +02:00
"github.com/TwinProduction/gatus/storage/store/common"
)
2021-02-25 05:26:13 +01:00
const (
// DefaultPage is the default page to use if none is specified or an invalid value is provided
DefaultPage = 1
// DefaultPageSize is the default page siZE to use if none is specified or an invalid value is provided
DefaultPageSize = 20
// MaximumPageSize is the maximum page size allowed
2021-08-13 03:54:23 +02:00
MaximumPageSize = common.MaximumNumberOfResults
2021-02-25 05:26:13 +01:00
)
func extractPageAndPageSizeFromRequest(r *http.Request) (page int, pageSize int) {
var err error
if pageParameter := r.URL.Query().Get("page"); len(pageParameter) == 0 {
2021-02-25 05:26:13 +01:00
page = DefaultPage
} else {
page, err = strconv.Atoi(pageParameter)
if err != nil {
2021-02-25 05:26:13 +01:00
page = DefaultPage
}
if page < 1 {
page = DefaultPage
}
}
if pageSizeParameter := r.URL.Query().Get("pageSize"); len(pageSizeParameter) == 0 {
2021-02-25 05:26:13 +01:00
pageSize = DefaultPageSize
} else {
pageSize, err = strconv.Atoi(pageSizeParameter)
if err != nil {
2021-02-25 05:26:13 +01:00
pageSize = DefaultPageSize
}
2021-02-25 05:26:13 +01:00
if pageSize > MaximumPageSize {
pageSize = MaximumPageSize
} else if pageSize < 1 {
pageSize = DefaultPageSize
}
}
return
}