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

mendersoftware / mender-server / 1840159835

15 May 2025 01:37PM UTC coverage: 65.39% (-0.5%) from 65.861%
1840159835

Pull #691

gitlab-ci

web-flow
Merge pull request #653 from bahaa-ghazal/MEN-8236

refactor(inventory): Migrate from ant0nie/go-json-rest to gin-gonic/gin
Pull Request #691: Merge MEN-8236 into main

418 of 481 new or added lines in 7 files covered. (86.9%)

576 existing lines in 33 files now uncovered.

31905 of 48792 relevant lines covered (65.39%)

1.37 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
UNCOV
41
func (al ApiLimits) MarshalJSON() ([]byte, error) {
×
UNCOV
42
        if al.ApiBursts == nil {
×
UNCOV
43
                al.ApiBursts = make([]ApiBurst, 0)
×
UNCOV
44
        }
×
45

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

×
UNCOV
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