• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mendersoftware / mender-server / 1978029483

11 Aug 2025 02:15PM UTC coverage: 65.755% (+0.3%) from 65.495%
1978029483

Pull #860

gitlab-ci

kjaskiewiczz
docs(useradm): move API specification to single file

Changelog: Title
Ticket: QA-1094
Signed-off-by: Krzysztof Jaskiewicz <krzysztof.jaskiewicz@northern.tech>
Pull Request #860: docs(useradm): move API specification to single file

29261 of 44500 relevant lines covered (65.76%)

1.44 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/backend/pkg/ratelimits/limits.go
1
// Copyright 2023 Northern.tech AS
2
//
3
//        Licensed under the Apache License, Version 2.0 (the "License");
4
//        you may not use this file except in compliance with the License.
5
//        You may obtain a copy of the License at
6
//
7
//            http://www.apache.org/licenses/LICENSE-2.0
8
//
9
//        Unless required by applicable law or agreed to in writing, software
10
//        distributed under the License is distributed on an "AS IS" BASIS,
11
//        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
//        See the License for the specific language governing permissions and
13
//        limitations under the License.
14
package ratelimits
15

16
import (
17
        "encoding/json"
18
)
19

20
// ApiBurst defines minimal interval (seconds) between subsequent calls to action on uri
21
type ApiBurst struct {
22
        Action         string `json:"action" bson:"action"`
23
        Uri            string `json:"uri" bson:"uri"`
24
        MinIntervalSec int    `json:"min_interval_sec" bson:"min_interval_sec"`
25
}
26

27
// ApiQuota defines the ratelimit quota as max number of calls in a given time interval (in seconds)
28
// MaxCalls == 0 means 'no quota limit'
29
type ApiQuota struct {
30
        MaxCalls    int `json:"max_calls" bson:"max_calls"`
31
        IntervalSec int `json:"interval_sec" bson:"interval_sec"`
32
}
33

34
// ApiLimits combines burst limits and usage quota limits
35
type ApiLimits struct {
36
        ApiBursts []ApiBurst `json:"bursts" bson:"bursts"`
37
        ApiQuota  ApiQuota   `json:"quota" bson:"quota"`
38
}
39

40
// MarshalJSON makes sure even defaut nil ApiLimits.ApiBursts are actually empty lists
41
func (al ApiLimits) MarshalJSON() ([]byte, error) {
×
42
        if al.ApiBursts == nil {
×
43
                al.ApiBursts = make([]ApiBurst, 0)
×
44
        }
×
45

46
        type Copy ApiLimits
×
47
        copy := struct {
×
48
                Copy
×
49
        }{
×
50
                Copy: (Copy)(al),
×
51
        }
×
52

×
53
        return json.Marshal(&copy)
×
54
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc