evcc-io/tariff/helper.go
2024-05-04 10:05:00 +02:00

31 lines
676 B
Go

package tariff
import (
"errors"
"strings"
"time"
"github.com/cenkalti/backoff/v4"
"github.com/evcc-io/evcc/util/request"
)
func newBackoff() backoff.BackOff {
bo := backoff.NewExponentialBackOff()
bo.InitialInterval = time.Second
bo.MaxElapsedTime = time.Minute
return bo
}
// backoffPermanentError returns a permanent error in case of HTTP 400
func backoffPermanentError(err error) error {
var se request.StatusError
if errors.As(err, &se) {
if code := se.StatusCode(); code >= 400 && code < 500 {
return backoff.Permanent(se)
}
}
if err != nil && strings.HasPrefix(err.Error(), "jq: query failed") {
return backoff.Permanent(err)
}
return err
}