1 /**
2 * Copyright 2016 IBM Corp.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 17 package sl
18 19 import (
20 "math"
21 )
22 23 var DefaultLimit = 50
24 25 // Options contains the individual query parameters that can be applied to a request.
26 type Options struct {
27 Id *int
28 Mask string
29 Filter string
30 Limit *int
31 Offset *int
32 TotalItems int
33 }
34 35 // returns Math.Ciel((TotalItems - Limit) / Limit)
36 func (opt *Options) GetRemainingAPICalls() int {
37 Total := float64(opt.TotalItems)
38 Limit := float64(*opt.Limit)
39 return int(math.Ceil((Total - Limit) / Limit))
40 }
41 42 // Makes sure the limit is set to something, not 0 or 1. Will set to default if no other limit is set.
43 func (opt *Options) ValidateLimit() int {
44 if opt.Limit == nil || *opt.Limit < 2 {
45 opt.Limit = &DefaultLimit
46 }
47 return *opt.Limit
48 }
49 50 func (opt *Options) SetTotalItems(total int) {
51 opt.TotalItems = total
52 }
53 54 func (opt *Options) SetOffset(offset int) {
55 opt.Offset = &offset
56 }
57 58 func (opt *Options) SetLimit(limit int) {
59 opt.Limit = &limit
60 }
61