From 506a8b4776db67388af2e55dff2a482ba00df78a Mon Sep 17 00:00:00 2001 From: dudaodong Date: Fri, 15 Jul 2022 16:29:41 +0800 Subject: [PATCH] feat: add EncodeUrl function --- netutil/net.go | 13 +++++++++++++ netutil/net_test.go | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/netutil/net.go b/netutil/net.go index c685ab3..6960de0 100644 --- a/netutil/net.go +++ b/netutil/net.go @@ -5,6 +5,7 @@ import ( "io/ioutil" "net" "net/http" + "net/url" "strings" ) @@ -157,3 +158,15 @@ func IsInternalIP(IP net.IP) bool { } return false } + +// EncodeUrl encode url +func EncodeUrl(urlStr string) (string, error) { + URL, err := url.Parse(urlStr) + if err != nil { + return "", err + } + + URL.RawQuery = URL.Query().Encode() + + return URL.String(), nil +} diff --git a/netutil/net_test.go b/netutil/net_test.go index f4fa146..45723a5 100644 --- a/netutil/net_test.go +++ b/netutil/net_test.go @@ -96,3 +96,16 @@ func TestGetMacAddrs(t *testing.T) { macAddrs := GetMacAddrs() t.Log(macAddrs) } + +func TestEncodeUrl(t *testing.T) { + assert := internal.NewAssert(t, "TestIsInternalIP") + + urlAddr := "http://www.lancet.com?a=1&b=[2]" + encodedUrl, err := EncodeUrl(urlAddr) + if err != nil { + t.Log(err) + } + + expected := "http://www.lancet.com?a=1&b=%5B2%5D" + assert.Equal(expected, encodedUrl) +}