in cmd/certificate_list.go [54:94]
func (o certificateListOperation) find() (acm.Certificates, error) {
var wg sync.WaitGroup
o.output.Debug("Listing certificates [API=acm Action=ListCertificates]")
certificates, err := o.acm.ListCertificates()
if err != nil {
return acm.Certificates{}, err
}
errs := make(chan error)
done := make(chan bool)
limiter := rate.NewLimiter(describeRequestLimitRate, 1)
for i := 0; i < len(certificates); i++ {
wg.Add(1)
go func(index int) {
defer wg.Done()
if err := limiter.Wait(context.Background()); err == nil {
o.output.Debug("Describing certificate [API=acm Action=DescribeCertificate ARN=%s]", certificates[index].ARN)
if err := o.acm.InflateCertificate(&certificates[index]); err != nil {
errs <- err
}
}
}(i)
}
go func() {
wg.Wait()
done <- true
}()
select {
case err := <-errs:
return acm.Certificates{}, err
case <-done:
return certificates, nil
}
}