20 lines
414 B
Go
20 lines
414 B
Go
package egressutil
|
|
|
|
func ProbeFirstSuccess(endpoints []string, probe func(rawURL string) (string, error)) (string, []string) {
|
|
if len(endpoints) == 0 {
|
|
return "", nil
|
|
}
|
|
errs := make([]string, 0, len(endpoints))
|
|
for _, rawURL := range endpoints {
|
|
if probe == nil {
|
|
continue
|
|
}
|
|
val, err := probe(rawURL)
|
|
if err == nil {
|
|
return val, nil
|
|
}
|
|
errs = append(errs, err.Error())
|
|
}
|
|
return "", errs
|
|
}
|