Procházet zdrojové kódy

Add in-memory file

tags/v2.1.6^2
9seconds před 4 roky
rodič
revize
c0899d0743
2 změnil soubory, kde provedl 79 přidání a 0 odebrání
  1. 37
    0
      ipblocklist/files/mem.go
  2. 42
    0
      ipblocklist/files/mem_test.go

+ 37
- 0
ipblocklist/files/mem.go Zobrazit soubor

@@ -0,0 +1,37 @@
1
+package files
2
+
3
+import (
4
+	"context"
5
+	"io"
6
+	"net"
7
+	"strings"
8
+)
9
+
10
+type memFile struct {
11
+	data string
12
+}
13
+
14
+func (m memFile) Open(ctx context.Context) (io.ReadCloser, error) {
15
+	return io.NopCloser(strings.NewReader(m.data)), nil
16
+}
17
+
18
+func (m memFile) String() string {
19
+	return "mem"
20
+}
21
+
22
+func NewMem(networks []*net.IPNet) (File) {
23
+	builder := strings.Builder{}
24
+
25
+	if len(networks) > 0 {
26
+		builder.WriteString(networks[0].String())
27
+	}
28
+
29
+	for i := 1; i < len(networks); i++ {
30
+		builder.WriteString("\n")
31
+		builder.WriteString(networks[i].String())
32
+	}
33
+
34
+	return memFile{
35
+		data:  builder.String(),
36
+	}
37
+}

+ 42
- 0
ipblocklist/files/mem_test.go Zobrazit soubor

@@ -0,0 +1,42 @@
1
+package files_test
2
+
3
+import (
4
+	"context"
5
+	"io"
6
+	"net"
7
+	"strings"
8
+	"testing"
9
+
10
+	"github.com/9seconds/mtg/v2/ipblocklist/files"
11
+	"github.com/stretchr/testify/suite"
12
+)
13
+
14
+type MemTestSuite struct {
15
+	suite.Suite
16
+}
17
+
18
+func (suite *MemTestSuite) TestOk() {
19
+	_, network1, _ := net.ParseCIDR("192.168.0.1/24")
20
+	_, network2, _ := net.ParseCIDR("2001:0db8:85a3:0000:0000:8a2e:0370:7334/36")
21
+
22
+	file := files.NewMem([]*net.IPNet{
23
+		network1,
24
+		network2,
25
+	})
26
+
27
+	reader, err := file.Open(context.Background())
28
+	suite.NoError(err)
29
+
30
+	data, err := io.ReadAll(reader)
31
+	suite.NoError(err)
32
+
33
+	strData := strings.TrimSpace(string(data))
34
+
35
+	suite.Contains(strData, "192.168.0.0/24")
36
+	suite.Contains(strData, "2001:db8:8000::/36")
37
+}
38
+
39
+func TestMem(t *testing.T) {
40
+	t.Parallel()
41
+	suite.Run(t, &MemTestSuite{})
42
+}

Načítá se…
Zrušit
Uložit