@@ -35,20 +35,49 @@ type Client struct {
35
35
36
36
// Options/Variables for Client
37
37
type ClientConfig struct {
38
- Integration APIIntegration
39
- HideSensitiveData bool `json:"hide_sensitive_data"`
40
- CustomCookies []* http.Cookie
41
- MaxRetryAttempts int `json:"max_retry_attempts"`
42
- MaxConcurrentRequests int `json:"max_concurrent_requests"`
43
- EnableDynamicRateLimiting bool `json:"enable_dynamic_rate_limiting"`
44
- CustomTimeout time.Duration
45
- TokenRefreshBufferPeriod time.Duration
46
- TotalRetryDuration time.Duration
47
- FollowRedirects bool `json:"follow_redirects"`
48
- MaxRedirects int `json:"max_redirects"`
38
+ // Interface which implements the APIIntegration patterns. Integration handles all server/endpoint specific configuration, auth and vars.
39
+ Integration APIIntegration
40
+
41
+ // HideSenitiveData controls if sensitive data will be visible in logs. Debug option which should be True in production use.
42
+ HideSensitiveData bool `json:"hide_sensitive_data"`
43
+
44
+ // CustomCookies allows implementation of persistent, session wide cookies.
45
+ CustomCookies []* http.Cookie
46
+
47
+ // MaxRetry Attempts limits the amount of retries the client will perform on requests which are deemd retriable.
48
+ MaxRetryAttempts int `json:"max_retry_attempts"`
49
+
50
+ // MaxConcurrentRequests limits the amount of Semaphore tokens available to the client and therefor limits concurrent requests.
51
+ MaxConcurrentRequests int `json:"max_concurrent_requests"`
52
+
53
+ // EnableDynamicRateLimiting // TODO because I don't know.
54
+ EnableDynamicRateLimiting bool `json:"enable_dynamic_rate_limiting"`
55
+
56
+ // CustomTimeout // TODO also because I don't know.
57
+ CustomTimeout time.Duration
58
+
59
+ // TokenRefreshBufferPeriod is the duration of time before the token expires in which it's deemed
60
+ // more sensible to replace the token rather then carry on using it.
61
+ TokenRefreshBufferPeriod time.Duration
62
+
63
+ // TotalRetryDuration // TODO maybe this should be called context?
64
+ TotalRetryDuration time.Duration
65
+
66
+ // FollowRedirects allows the client to follow redirections when they're returned from a request.
67
+ FollowRedirects bool `json:"follow_redirects"`
68
+
69
+ // MaxRedirects is the maximum amount of redirects the client will follow before throwing an error.
70
+ MaxRedirects int `json:"max_redirects"`
71
+
72
+ // EnableConcurrencyManagement when false bypasses any concurrency management to allow for a simpler request flow.
49
73
EnableConcurrencyManagement bool `json:"enable_concurrency_management"`
50
- MandatoryRequestDelay time.Duration
51
- RetryEligiableRequests bool `json:"retry_eligiable_requests"`
74
+
75
+ // MandatoryRequestDelay is a short, usually sub 0.5 second, delay after every request as to not overwhelm an endpoint.
76
+ // Can be set to nothing if you want to be lightning fast!
77
+ MandatoryRequestDelay time.Duration
78
+
79
+ // RetryEligiableRequests when false bypasses any retry logic for a simpler request flow.
80
+ RetryEligiableRequests bool `json:"retry_eligiable_requests"`
52
81
}
53
82
54
83
// BuildClient creates a new HTTP client with the provided configuration.
0 commit comments