push.go: initialize nil opts with the zero PushOptions inside InitPushExtWithOptions

This makes the InitPushExtWithOptions code more maintainable because of removed checks for nil opts.
This commit is contained in:
Aliaksandr Valialkin 2023-12-18 12:51:26 +02:00
parent b96951708c
commit bee9e4faf1
No known key found for this signature in database
GPG Key ID: 52C003EE2BCDB9EB

30
push.go
View File

@ -179,6 +179,10 @@ func InitPushExt(pushURL string, interval time.Duration, extraLabels string, wri
// It is OK calling InitPushExtWithOptions multiple times with different writeMetrics -
// in this case all the metrics generated by writeMetrics callbacks are written to pushURL.
func InitPushExtWithOptions(ctx context.Context, pushURL string, interval time.Duration, writeMetrics func(w io.Writer), opts *PushOptions) error {
if opts == nil {
opts = &PushOptions{}
}
// validate pushURL
pu, err := url.Parse(pushURL)
if err != nil {
@ -197,33 +201,25 @@ func InitPushExtWithOptions(ctx context.Context, pushURL string, interval time.D
}
// validate ExtraLabels
var extraLabels string
if opts != nil {
extraLabels = opts.ExtraLabels
}
extraLabels := opts.ExtraLabels
if err := validateTags(extraLabels); err != nil {
return fmt.Errorf("invalid extraLabels=%q: %w", extraLabels, err)
}
// validate Headers
headers := make(http.Header)
if opts != nil {
for _, h := range opts.Headers {
n := strings.IndexByte(h, ':')
if n < 0 {
return fmt.Errorf("missing `:` delimiter in the header %q", h)
}
name := strings.TrimSpace(h[:n])
value := strings.TrimSpace(h[n+1:])
headers.Add(name, value)
for _, h := range opts.Headers {
n := strings.IndexByte(h, ':')
if n < 0 {
return fmt.Errorf("missing `:` delimiter in the header %q", h)
}
name := strings.TrimSpace(h[:n])
value := strings.TrimSpace(h[n+1:])
headers.Add(name, value)
}
// validate DisableCompression
disableCompression := false
if opts != nil {
disableCompression = opts.DisableCompression
}
disableCompression := opts.DisableCompression
// Initialize metrics for the given pushURL
pushURLRedacted := pu.Redacted()