Skip to content

Commit d16a534

Browse files
committed
Feat: v2.0
1 parent 44912e7 commit d16a534

File tree

7 files changed

+713
-90
lines changed

7 files changed

+713
-90
lines changed

admin.go

+32
Large diffs are not rendered by default.

data/data.go

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package data
2+
3+
import (
4+
"encoding/json"
5+
"os"
6+
)
7+
8+
type Data[T any] struct {
9+
Filepath string `json:"filepath" xml:"filepath" form:"filepath"`
10+
Data T `json:"data" xml:"data" form:"data"`
11+
}
12+
13+
func New[T any](filepath string, sample T) *Data[T] {
14+
// create data
15+
data := new(Data[T])
16+
// set
17+
data.Filepath = filepath
18+
// open data
19+
err := data.Open()
20+
if err != nil {
21+
data.Data = sample
22+
data.Save() // create new file
23+
}
24+
// return data
25+
return data
26+
}
27+
28+
func (data *Data[T]) Open() error {
29+
f, err := os.Open(data.Filepath)
30+
if err != nil {
31+
return err
32+
}
33+
defer f.Close()
34+
decoder := json.NewDecoder(f)
35+
decoder.Decode(&data.Data)
36+
return nil
37+
}
38+
39+
func (data *Data[T]) Save() error {
40+
f, err := os.Create(data.Filepath)
41+
if err != nil {
42+
return err
43+
}
44+
defer f.Close()
45+
encoder := json.NewEncoder(f)
46+
encoder.SetIndent("", " ") // pretty json
47+
encoder.Encode(data.Data)
48+
return nil
49+
}

go.mod

+13-7
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
1-
module dev-proxy
1+
module github.com/yejun614/dev-proxy
22

33
go 1.20
44

5-
require github.com/gofiber/fiber/v2 v2.47.0
5+
require (
6+
github.com/fasthttp/websocket v1.5.4
7+
github.com/gofiber/contrib/websocket v1.2.1
8+
github.com/gofiber/fiber/v2 v2.49.1
9+
github.com/gorilla/websocket v1.5.0
10+
github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f
11+
)
612

713
require (
814
github.com/andybalholm/brotli v1.0.5 // indirect
9-
github.com/google/uuid v1.3.0 // indirect
10-
github.com/klauspost/compress v1.16.3 // indirect
15+
github.com/google/uuid v1.3.1 // indirect
16+
github.com/klauspost/compress v1.16.7 // indirect
1117
github.com/mattn/go-colorable v0.1.13 // indirect
1218
github.com/mattn/go-isatty v0.0.19 // indirect
13-
github.com/mattn/go-runewidth v0.0.14 // indirect
19+
github.com/mattn/go-runewidth v0.0.15 // indirect
1420
github.com/philhofer/fwd v1.1.2 // indirect
1521
github.com/rivo/uniseg v0.2.0 // indirect
1622
github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94 // indirect
1723
github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee // indirect
1824
github.com/tinylib/msgp v1.1.8 // indirect
1925
github.com/valyala/bytebufferpool v1.0.0 // indirect
20-
github.com/valyala/fasthttp v1.47.0 // indirect
26+
github.com/valyala/fasthttp v1.49.0 // indirect
2127
github.com/valyala/tcplisten v1.0.0 // indirect
22-
golang.org/x/sys v0.9.0 // indirect
28+
golang.org/x/sys v0.11.0 // indirect
2329
)

go.sum

+20
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,34 @@
11
github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=
22
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
3+
github.com/fasthttp/websocket v1.5.4 h1:Bq8HIcoiffh3pmwSKB8FqaNooluStLQQxnzQspMatgI=
4+
github.com/fasthttp/websocket v1.5.4/go.mod h1:R2VXd4A6KBspb5mTrsWnZwn6ULkX56/Ktk8/0UNSJao=
5+
github.com/gofiber/contrib/websocket v1.2.1 h1:z8yNG9rnhXBVeuyEIEM1jFAYZvjSjax4LHvmh6mgLV0=
6+
github.com/gofiber/contrib/websocket v1.2.1/go.mod h1:7OeR6WnMK0j/BfawrvNem8SdoHijGdf8KQdXEcmLXmw=
37
github.com/gofiber/fiber/v2 v2.47.0 h1:EN5lHVCc+Pyqh5OEsk8fzRiifgwpbrP0rulQ4iNf3fs=
48
github.com/gofiber/fiber/v2 v2.47.0/go.mod h1:mbFMVN1lQuzziTkkakgtKKdjfsXSw9BKR5lmcNksUoU=
9+
github.com/gofiber/fiber/v2 v2.49.1 h1:0W2DRWevSirc8pJl4o8r8QejDR8TV6ZUCawHxwbIdOk=
10+
github.com/gofiber/fiber/v2 v2.49.1/go.mod h1:nPUeEBUeeYGgwbDm59Gp7vS8MDyScL6ezr/Np9A13WU=
511
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
612
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
13+
github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
14+
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
15+
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
16+
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
17+
github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f h1:dKccXx7xA56UNqOcFIbuqFjAWPVtP688j5QMgmo6OHU=
18+
github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f/go.mod h1:4rEELDSfUAlBSyUjPG0JnaNGjf13JySHFeRdD/3dLP0=
719
github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY=
820
github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
21+
github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
22+
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
923
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
1024
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
1125
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
1226
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
1327
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
1428
github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
1529
github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
30+
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
31+
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
1632
github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
1733
github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw=
1834
github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0=
@@ -30,6 +46,8 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw
3046
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
3147
github.com/valyala/fasthttp v1.47.0 h1:y7moDoxYzMooFpT5aHgNgVOQDrS3qlkfiP9mDtGGK9c=
3248
github.com/valyala/fasthttp v1.47.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA=
49+
github.com/valyala/fasthttp v1.49.0 h1:9FdvCpmxB74LH4dPb7IJ1cOSsluR07XG3I1txXWwJpE=
50+
github.com/valyala/fasthttp v1.49.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA=
3351
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
3452
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
3553
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -63,6 +81,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
6381
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
6482
golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s=
6583
golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
84+
golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
85+
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
6686
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
6787
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
6888
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=

0 commit comments

Comments
 (0)