@@ -37,8 +37,9 @@ type RateLimits struct {
37
37
}
38
38
39
39
var (
40
- first = "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull"
41
- second = "https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest"
40
+ first = "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull"
41
+ second = "https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest"
42
+ defaultValue = - 1
42
43
)
43
44
44
45
// SetURLs change the base urls used to check ratelimiting values
@@ -47,7 +48,7 @@ func SetURLs(newFirst, newSecond string) {
47
48
second = newSecond
48
49
}
49
50
50
- // GetRateLimits returns the rate limits for the authenticated user
51
+ // GetRateLimits returns the rate limits for the user
51
52
func (c * Client ) GetRateLimits () (* RateLimits , error ) {
52
53
token , err := tryGetToken (c )
53
54
if err != nil {
@@ -66,9 +67,16 @@ func (c *Client) GetRateLimits() (*RateLimits, error) {
66
67
67
68
limitHeader := resp .Header .Get ("Ratelimit-Limit" )
68
69
remainingHeader := resp .Header .Get ("Ratelimit-Remaining" )
70
+ source := resp .Header .Get ("docker-Ratelimit-Source" )
69
71
70
72
if limitHeader == "" || remainingHeader == "" {
71
- return nil , nil
73
+ return & RateLimits {
74
+ Limit : & defaultValue ,
75
+ LimitWindow : & defaultValue ,
76
+ Remaining : & defaultValue ,
77
+ RemainingWindow : & defaultValue ,
78
+ Source : & source ,
79
+ }, nil
72
80
}
73
81
74
82
limit , limitWindow , err := parseLimitHeader (limitHeader )
@@ -81,8 +89,6 @@ func (c *Client) GetRateLimits() (*RateLimits, error) {
81
89
return nil , err
82
90
}
83
91
84
- source := resp .Header .Get ("docker-Ratelimit-Source" )
85
-
86
92
return & RateLimits {
87
93
Limit : & limit ,
88
94
LimitWindow : & limitWindow ,
0 commit comments