Merge branch 'main' into twilio

This commit is contained in:
binwiederhier 2023-05-12 20:02:32 -04:00
commit 214efbde36
3 changed files with 14 additions and 9 deletions

View file

@ -138,6 +138,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank
<a href="https://github.com/ScrumpyJack"><img src="https://github.com/ScrumpyJack.png" width="40px" /></a> <a href="https://github.com/ScrumpyJack"><img src="https://github.com/ScrumpyJack.png" width="40px" /></a>
<a href="https://github.com/andrejarrell"><img src="https://github.com/andrejarrell.png" width="40px" /></a> <a href="https://github.com/andrejarrell"><img src="https://github.com/andrejarrell.png" width="40px" /></a>
<a href="https://github.com/oaustegard"><img src="https://github.com/oaustegard.png" width="40px" /></a> <a href="https://github.com/oaustegard"><img src="https://github.com/oaustegard.png" width="40px" /></a>
<a href="https://github.com/CreativeWarlock"><img src="https://github.com/CreativeWarlock.png" width="40px" /></a>
I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free, 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: and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project:

View file

@ -6,7 +6,6 @@ import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"golang.org/x/time/rate"
"io" "io"
"math/rand" "math/rand"
"net/netip" "net/netip"
@ -17,6 +16,8 @@ import (
"sync" "sync"
"time" "time"
"golang.org/x/time/rate"
"github.com/gabriel-vasile/mimetype" "github.com/gabriel-vasile/mimetype"
"golang.org/x/term" "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 // ContainsAll returns true if all needles are contained in haystack
func ContainsAll[T comparable](haystack []T, needles []T) bool { func ContainsAll[T comparable](haystack []T, needles []T) bool {
matches := 0 for _, needle := range needles {
for _, s := range haystack { if !Contains(haystack, needle) {
for _, needle := range needles { return false
if s == needle {
matches++
}
} }
} }
return matches == len(needles) return true
} }
// SplitNoEmpty splits a string using strings.Split, but filters out empty strings // SplitNoEmpty splits a string using strings.Split, but filters out empty strings

View file

@ -2,7 +2,6 @@ package util
import ( import (
"errors" "errors"
"golang.org/x/time/rate"
"io" "io"
"net/netip" "net/netip"
"os" "os"
@ -11,6 +10,8 @@ import (
"testing" "testing"
"time" "time"
"golang.org/x/time/rate"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
@ -49,6 +50,11 @@ func TestContains(t *testing.T) {
require.False(t, Contains(s, 3)) 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) { 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("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"))) require.True(t, ContainsIP([]netip.Prefix{netip.MustParsePrefix("fd00::/8"), netip.MustParsePrefix("1.1.0.0/16")}, netip.MustParseAddr("fd12:1234:5678::9876")))