Skip to content

Commit ed8b145

Browse files
committed
update url validation
1 parent 9971e57 commit ed8b145

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

receiver/mongodbatlasreceiver/config.go

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,19 +131,16 @@ var (
131131

132132
// Access Logs Errors
133133
errMaxPageSize = errors.New("the maximum value for 'page_size' is 20000")
134+
135+
// Config Errors
136+
errConfigEmptyEndpoint = errors.New("endpoint must not be empty")
134137
)
135138

136139
func (c *Config) Validate() error {
137140
var errs error
138141
baseurl := c.BaseURL
139-
if u, err := url.ParseRequestURI(baseurl); err != nil {
140-
errs = multierr.Append(errs, fmt.Errorf("base_url is not valid: %w", err))
141-
if u.Scheme == "" {
142-
errs = multierr.Append(errs, fmt.Errorf("base_url must contain a scheme (http or https)"))
143-
}
144-
if u.Host == "" {
145-
errs = multierr.Append(errs, fmt.Errorf("base_url must contain a host"))
146-
}
142+
if err := validateEndpoint(baseurl); err != nil {
143+
return fmt.Errorf("invalid base_url %q: %w", baseurl, err)
147144
}
148145

149146
for _, project := range c.Projects {
@@ -255,3 +252,23 @@ func (e EventsConfig) validate() error {
255252
}
256253
return nil
257254
}
255+
256+
func validateEndpoint(endpoint string) error {
257+
if endpoint == "" {
258+
return errConfigEmptyEndpoint
259+
}
260+
261+
u, err := url.Parse(endpoint)
262+
if err != nil {
263+
return err
264+
}
265+
switch u.Scheme {
266+
case "http", "https":
267+
default:
268+
return fmt.Errorf(`invalid scheme %q, expected "http" or "https"`, u.Scheme)
269+
}
270+
if u.Host == "" {
271+
return fmt.Errorf("host must not be empty")
272+
}
273+
return nil
274+
}

0 commit comments

Comments
 (0)