in build-index/tagserver/server.go [453:486]
func buildPaginationOptions(u *url.URL) ([]backend.ListOption, error) {
var opts []backend.ListOption
q := u.Query()
for k, v := range q {
if len(v) != 1 {
return nil, handler.Errorf(
"invalid query %s:%s", k, v).Status(http.StatusBadRequest)
}
switch k {
case tagmodels.LimitQ:
limitCount, err := strconv.Atoi(v[0])
if err != nil {
return nil, handler.Errorf(
"invalid limit %s: %s", v, err).Status(http.StatusBadRequest)
}
if limitCount == 0 {
return nil, handler.Errorf(
"invalid limit %d", limitCount).Status(http.StatusBadRequest)
}
opts = append(opts, backend.ListWithMaxKeys(limitCount))
case tagmodels.OffsetQ:
opts = append(opts, backend.ListWithContinuationToken(v[0]))
default:
return nil, handler.Errorf(
"invalid query %s", k).Status(http.StatusBadRequest)
}
}
if len(opts) > 0 {
// Enable pagination if either or both of the query param exists.
opts = append(opts, backend.ListWithPagination())
}
return opts, nil
}