Skip to content

Commit 44e5f6e

Browse files
committed
chore: Update httpclient client configuration options
1 parent 769a8a1 commit 44e5f6e

File tree

2 files changed

+55
-35
lines changed

2 files changed

+55
-35
lines changed

httpclient/client.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,18 @@ type Client struct {
3535

3636
// Options/Variables for Client
3737
type ClientConfig struct {
38-
Integration APIIntegration
39-
HideSensitiveData bool
40-
CustomCookies []*http.Cookie
41-
MaxRetryAttempts int
42-
MaxConcurrentRequests int
43-
EnableDynamicRateLimiting bool
44-
CustomTimeout time.Duration
45-
TokenRefreshBufferPeriod time.Duration
46-
TotalRetryDuration time.Duration // TODO do we need this now it's in the integration?
47-
FollowRedirects bool
48-
MaxRedirects int
49-
ConcurrencyManagementEnabled bool
38+
Integration APIIntegration
39+
HideSensitiveData bool
40+
CustomCookies []*http.Cookie
41+
MaxRetryAttempts int
42+
MaxConcurrentRequests int
43+
EnableDynamicRateLimiting bool
44+
CustomTimeout time.Duration
45+
TokenRefreshBufferPeriod time.Duration
46+
TotalRetryDuration time.Duration // TODO do we need this now it's in the integration?
47+
FollowRedirects bool
48+
MaxRedirects int
49+
EnableConcurrencyManagement bool
5050
}
5151

5252
// BuildClient creates a new HTTP client with the provided configuration.

httpclient/config_validation.go

Lines changed: 43 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,28 @@ import (
77
"errors"
88
"fmt"
99
"io"
10+
"net/http"
1011
"os"
12+
"strings"
1113
"time"
1214
)
1315

1416
const (
15-
DefaultLogLevelString = "LogLevelInfo"
16-
DefaultLogOutputFormatString = "pretty"
17-
DefaultLogConsoleSeparator = " "
18-
DefaultLogExportPath = "/defaultlogs"
19-
DefaultMaxRetryAttempts = 3
20-
DefaultMaxConcurrentRequests = 1
21-
DefaultExportLogs = false
22-
DefaultHideSensitiveData = false
23-
DefaultEnableDynamicRateLimiting = false
24-
DefaultCustomTimeout = 5 * time.Second
25-
DefaultTokenRefreshBufferPeriod = 2 * time.Minute
26-
DefaultTotalRetryDuration = 5 * time.Minute
27-
DefaultFollowRedirects = false
28-
DefaultMaxRedirects = 5
17+
DefaultLogLevelString = "LogLevelInfo"
18+
DefaultLogOutputFormatString = "pretty"
19+
DefaultLogConsoleSeparator = " "
20+
DefaultLogExportPath = "/defaultlogs"
21+
DefaultMaxRetryAttempts = 3
22+
DefaultMaxConcurrentRequests = 1
23+
DefaultExportLogs = false
24+
DefaultHideSensitiveData = false
25+
DefaultEnableDynamicRateLimiting = false
26+
DefaultCustomTimeout = 5 * time.Second
27+
DefaultTokenRefreshBufferPeriod = 2 * time.Minute
28+
DefaultTotalRetryDuration = 5 * time.Minute
29+
DefaultFollowRedirects = false
30+
DefaultMaxRedirects = 5
31+
DefaultEnableConcurrencyManagement = false
2932
)
3033

3134
// LoadConfigFromFile loads http client configuration settings from a JSON file.
@@ -62,15 +65,32 @@ func LoadConfigFromFile(filepath string) (*ClientConfig, error) {
6265
// If any environment variables are not set, the default values defined in the constants are used instead.
6366
func LoadConfigFromEnv() (*ClientConfig, error) {
6467
config := &ClientConfig{
65-
HideSensitiveData: getEnvAsBool("HIDE_SENSITIVE_DATA", DefaultHideSensitiveData),
66-
MaxRetryAttempts: getEnvAsInt("MAX_RETRY_ATTEMPTS", DefaultMaxRetryAttempts),
67-
MaxConcurrentRequests: getEnvAsInt("MAX_CONCURRENT_REQUESTS", DefaultMaxConcurrentRequests),
68-
EnableDynamicRateLimiting: getEnvAsBool("ENABLE_DYNAMIC_RATE_LIMITING", DefaultEnableDynamicRateLimiting),
69-
CustomTimeout: getEnvAsDuration("CUSTOM_TIMEOUT", DefaultCustomTimeout),
70-
TokenRefreshBufferPeriod: getEnvAsDuration("TOKEN_REFRESH_BUFFER_PERIOD", DefaultTokenRefreshBufferPeriod),
71-
TotalRetryDuration: getEnvAsDuration("TOTAL_RETRY_DURATION", DefaultTotalRetryDuration),
72-
FollowRedirects: getEnvAsBool("FOLLOW_REDIRECTS", DefaultFollowRedirects),
73-
MaxRedirects: getEnvAsInt("MAX_REDIRECTS", DefaultMaxRedirects),
68+
HideSensitiveData: getEnvAsBool("HIDE_SENSITIVE_DATA", DefaultHideSensitiveData),
69+
MaxRetryAttempts: getEnvAsInt("MAX_RETRY_ATTEMPTS", DefaultMaxRetryAttempts),
70+
MaxConcurrentRequests: getEnvAsInt("MAX_CONCURRENT_REQUESTS", DefaultMaxConcurrentRequests),
71+
EnableDynamicRateLimiting: getEnvAsBool("ENABLE_DYNAMIC_RATE_LIMITING", DefaultEnableDynamicRateLimiting),
72+
CustomTimeout: getEnvAsDuration("CUSTOM_TIMEOUT", DefaultCustomTimeout),
73+
TokenRefreshBufferPeriod: getEnvAsDuration("TOKEN_REFRESH_BUFFER_PERIOD", DefaultTokenRefreshBufferPeriod),
74+
TotalRetryDuration: getEnvAsDuration("TOTAL_RETRY_DURATION", DefaultTotalRetryDuration),
75+
FollowRedirects: getEnvAsBool("FOLLOW_REDIRECTS", DefaultFollowRedirects),
76+
MaxRedirects: getEnvAsInt("MAX_REDIRECTS", DefaultMaxRedirects),
77+
EnableConcurrencyManagement: getEnvAsBool("ENABLE_CONCURRENCY_MANAGEMENT", DefaultEnableConcurrencyManagement),
78+
}
79+
80+
// Load custom cookies from environment variables.
81+
customCookies := getEnvAsString("CUSTOM_COOKIES", "")
82+
if customCookies != "" {
83+
cookies := []*http.Cookie{}
84+
for _, cookie := range strings.Split(customCookies, ";") {
85+
parts := strings.SplitN(cookie, "=", 2)
86+
if len(parts) == 2 {
87+
cookies = append(cookies, &http.Cookie{
88+
Name: parts[0],
89+
Value: parts[1],
90+
})
91+
}
92+
}
93+
config.CustomCookies = cookies
7494
}
7595

7696
return config, nil

0 commit comments

Comments
 (0)