diff --git a/config/cli.go b/config/cli.go index 0977306..99db4f0 100644 --- a/config/cli.go +++ b/config/cli.go @@ -45,7 +45,7 @@ Flags: -m, -method string HTTP Method for the request (default %s) -b, -body [string] Body for the request (e.g. "body text") -p, -param [string] Parameter for the request (e.g. "key1=value1") - -H, -header [string] Header for the request (e.g. "key1: value1") + -H, -header [string] Header for the request (e.g. "key1:value1") -c, -cookie [string] Cookie for the request (e.g. "key1=value1") -x, -proxy [string] Proxy for the request (e.g. "http://proxy.example.com:8080")` diff --git a/config/config.go b/config/config.go index e92dff4..00a052f 100644 --- a/config/config.go +++ b/config/config.go @@ -233,4 +233,5 @@ func (config *Config) SetDefaults() { if config.Yes == nil { config.Yes = utils.ToPtr(DefaultYes) } + config.Headers.SetIfNotExists("User-Agent", DefaultUserAgent) } diff --git a/requests/request.go b/requests/request.go index f65804a..5cb810a 100644 --- a/requests/request.go +++ b/requests/request.go @@ -166,9 +166,6 @@ func setRequestHeaders(req *fasthttp.Request, headers []types.KeyValue[string, s for _, header := range headers { req.Header.Add(header.Key, header.Value) } - if req.Header.UserAgent() == nil { - req.Header.SetUserAgent(config.DefaultUserAgent) - } } // setRequestCookies adds the cookies of the given request with the provided key-value pairs. diff --git a/types/headers.go b/types/headers.go index 12684ec..3df8299 100644 --- a/types/headers.go +++ b/types/headers.go @@ -73,6 +73,15 @@ func (headers Headers) GetValue(key string) *[]string { return nil } +func (headers Headers) Has(key string) bool { + for i := range headers { + if headers[i].Key == key { + return true + } + } + return false +} + func (headers *Headers) UnmarshalJSON(b []byte) error { var data []map[string]any if err := json.Unmarshal(b, &data); err != nil { @@ -137,3 +146,11 @@ func (headers *Headers) Set(value string) error { return nil } + +func (headers *Headers) SetIfNotExists(key string, value string) bool { + if headers.Has(key) { + return false + } + *headers = append(*headers, KeyValue[string, []string]{Key: key, Value: []string{value}}) + return true +}