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) +}