-
Notifications
You must be signed in to change notification settings - Fork 0
/
types.go
60 lines (47 loc) · 1.3 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package ecogo
import (
"fmt"
"net/http"
"net/url"
)
type Client struct {
httpClient *http.Client
baseURL *url.URL
userAgent string
headers map[string]string
regionID string
projectID string
apiKey string
Clusters ClusterServiceI
Pools PoolServiceI
Users UserServiceI
retryConfig RetryConfig
}
// Opt are options for New.
type Opt func(*Client) error
type RetryConfig struct {
RetryMax int
RetryWaitMin *float64 // Minimum time to wait
RetryWaitMax *float64 // Maximum time to wait
Logger interface{} // Customer logger instance. Must implement either go-retryablehttp.Logger or go-retryablehttp.LeveledLogger
}
type Response struct {
*http.Response
}
// An ResponseError reports the error caused by an API request.
type ResponseError struct {
// HTTP response that caused this error
Response *http.Response
// Error message
Message string `json:"message"`
// Attempts is the number of times the request was attempted when retries are enabled.
Attempts int
}
func (r *ResponseError) Error() string {
var attempted string
if r.Attempts > 0 {
attempted = fmt.Sprintf("; giving up after %d attempt(s)", r.Attempts)
}
return fmt.Sprintf("%v %v: %d %v%s",
r.Response.Request.Method, r.Response.Request.URL, r.Response.StatusCode, r.Message, attempted)
}