Initial commit 🌈

This commit is contained in:
Ben Sarmiento
2023-10-16 21:31:51 +02:00
commit da2c53bf86
15 changed files with 802 additions and 0 deletions

23
pkg/realdebrid/util.go Normal file
View File

@@ -0,0 +1,23 @@
package realdebrid
import (
"math"
"strings"
"time"
)
func RetryUntilOk[T any](fn func() (T, error)) *T {
const initialDelay = 2 * time.Second
const maxDelay = 128 * time.Second
for i := 0; ; i++ {
result, err := fn()
if err == nil {
return &result
}
if strings.Contains(err.Error(), "404") {
return nil
}
delay := time.Duration(math.Min(float64(initialDelay*time.Duration(math.Pow(2, float64(i)))), float64(maxDelay)))
time.Sleep(delay)
}
}