diff --git a/README.md b/README.md
index 414aded4..77c78157 100644
--- a/README.md
+++ b/README.md
@@ -138,6 +138,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank
+
I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free,
and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project:
diff --git a/util/util.go b/util/util.go
index 33fa34ee..84177d9f 100644
--- a/util/util.go
+++ b/util/util.go
@@ -6,7 +6,6 @@ import (
"encoding/json"
"errors"
"fmt"
- "golang.org/x/time/rate"
"io"
"math/rand"
"net/netip"
@@ -17,6 +16,8 @@ import (
"sync"
"time"
+ "golang.org/x/time/rate"
+
"github.com/gabriel-vasile/mimetype"
"golang.org/x/term"
)
@@ -67,15 +68,12 @@ func ContainsIP(haystack []netip.Prefix, needle netip.Addr) bool {
// ContainsAll returns true if all needles are contained in haystack
func ContainsAll[T comparable](haystack []T, needles []T) bool {
- matches := 0
- for _, s := range haystack {
- for _, needle := range needles {
- if s == needle {
- matches++
- }
+ for _, needle := range needles {
+ if !Contains(haystack, needle) {
+ return false
}
}
- return matches == len(needles)
+ return true
}
// SplitNoEmpty splits a string using strings.Split, but filters out empty strings
diff --git a/util/util_test.go b/util/util_test.go
index 5717c5cc..49a24126 100644
--- a/util/util_test.go
+++ b/util/util_test.go
@@ -2,7 +2,6 @@ package util
import (
"errors"
- "golang.org/x/time/rate"
"io"
"net/netip"
"os"
@@ -11,6 +10,8 @@ import (
"testing"
"time"
+ "golang.org/x/time/rate"
+
"github.com/stretchr/testify/require"
)
@@ -49,6 +50,11 @@ func TestContains(t *testing.T) {
require.False(t, Contains(s, 3))
}
+func TestContainsAll(t *testing.T) {
+ require.True(t, ContainsAll([]int{1, 2, 3}, []int{2, 3}))
+ require.False(t, ContainsAll([]int{1, 1}, []int{1, 2}))
+}
+
func TestContainsIP(t *testing.T) {
require.True(t, ContainsIP([]netip.Prefix{netip.MustParsePrefix("fd00::/8"), netip.MustParsePrefix("1.1.0.0/16")}, netip.MustParseAddr("1.1.1.1")))
require.True(t, ContainsIP([]netip.Prefix{netip.MustParsePrefix("fd00::/8"), netip.MustParsePrefix("1.1.0.0/16")}, netip.MustParseAddr("fd12:1234:5678::9876")))