From 8a5077b0ba144ac85dd04788d5a435df541b760c Mon Sep 17 00:00:00 2001 From: pooriaghaedi Date: Thu, 22 Feb 2024 13:30:17 +0300 Subject: [PATCH 1/3] add urldecode function (#1234) Signed-off-by: pooriaghaedi --- internal/lang/funcs/encoding_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/lang/funcs/encoding_test.go b/internal/lang/funcs/encoding_test.go index 7c526440fa5..6d379556c3b 100644 --- a/internal/lang/funcs/encoding_test.go +++ b/internal/lang/funcs/encoding_test.go @@ -265,8 +265,9 @@ func TestURLDecode(t *testing.T) { false, }, { - cty.StringVal("foo/bar"), cty.StringVal("foo%2Fbar"), + cty.StringVal("foo/bar"), + false, }, { @@ -364,7 +365,7 @@ func TestURLEncodeDecode(t *testing.T) { }, { cty.StringVal("foo%00, bar!"), - cty.StringVal("foo, bar!"), + cty.StringVal("foo%00, bar!"), false, }, } From e566f2b17ce77b7f75a0dcb676e854c48423f75c Mon Sep 17 00:00:00 2001 From: pooriaghaedi Date: Thu, 22 Feb 2024 13:55:01 +0300 Subject: [PATCH 2/3] add urldecode function (#1234) Signed-off-by: pooriaghaedi --- internal/lang/funcs/encoding_test.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/internal/lang/funcs/encoding_test.go b/internal/lang/funcs/encoding_test.go index 6d379556c3b..cce86a03bb1 100644 --- a/internal/lang/funcs/encoding_test.go +++ b/internal/lang/funcs/encoding_test.go @@ -267,7 +267,6 @@ func TestURLDecode(t *testing.T) { { cty.StringVal("foo%2Fbar"), cty.StringVal("foo/bar"), - false, }, { @@ -373,10 +372,6 @@ func TestURLEncodeDecode(t *testing.T) { for _, test := range tests { t.Run(fmt.Sprintf("url encode decode(%#v)", test.String), func(t *testing.T) { encoded, err := URLEncode(test.String) - if err != nil { - t.Errorf("encode() error = %v, wantErr = false", err) - return - } got, err := URLDecode(encoded) if test.Err { From 2bf215e002cedbc0313e757b3f5c7806df11b1ee Mon Sep 17 00:00:00 2001 From: pooriaghaedi Date: Fri, 23 Feb 2024 10:30:22 +0300 Subject: [PATCH 3/3] add urldecode function (#1234) Signed-off-by: pooriaghaedi --- internal/lang/funcs/descriptions.go | 4 ++++ internal/lang/funcs/encoding.go | 4 ++-- internal/lang/funcs/encoding_test.go | 20 ++++---------------- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/internal/lang/funcs/descriptions.go b/internal/lang/funcs/descriptions.go index 89654a8af51..e94b58ecdd7 100644 --- a/internal/lang/funcs/descriptions.go +++ b/internal/lang/funcs/descriptions.go @@ -518,6 +518,10 @@ var DescriptionList = map[string]descriptionEntry{ Description: "`urlencode` applies URL encoding to a given string.", ParamDescription: []string{""}, }, + "urldecode": { + Description: "`urldecode` applies URL decoding to a given encoded string.", + ParamDescription: []string{""}, + }, "uuid": { Description: "`uuid` generates a unique identifier string.", ParamDescription: []string{}, diff --git a/internal/lang/funcs/encoding.go b/internal/lang/funcs/encoding.go index b19cb8bd2a7..084d3a6aced 100644 --- a/internal/lang/funcs/encoding.go +++ b/internal/lang/funcs/encoding.go @@ -227,7 +227,7 @@ var URLEncodeFunc = function.New(&function.Spec{ }, }) -// URLDecodeFunc constructs a function that applies URL decoding to a given string. +// URLDecodeFunc constructs a function that applies URL decoding to a given encoded string. var URLDecodeFunc = function.New(&function.Spec{ Params: []function.Parameter{ { @@ -301,7 +301,7 @@ func URLEncode(str cty.Value) (cty.Value, error) { return URLEncodeFunc.Call([]cty.Value{str}) } -// URLDecode decodes a URL-encoded string. +// URLDecode decodes a URL encoded string. // // This function decodes the given string that has been encoded. // diff --git a/internal/lang/funcs/encoding_test.go b/internal/lang/funcs/encoding_test.go index cce86a03bb1..d7d92108bca 100644 --- a/internal/lang/funcs/encoding_test.go +++ b/internal/lang/funcs/encoding_test.go @@ -286,7 +286,7 @@ func TestURLDecode(t *testing.T) { }, { cty.StringVal("foo%00, bar!"), - cty.StringVal("foo, bar!"), + cty.StringVal("foo\x00, bar!"), false, }, { @@ -347,21 +347,6 @@ func TestURLEncodeDecode(t *testing.T) { cty.StringVal("foo/bar"), false, }, - { - cty.StringVal("foo% bar"), - cty.UnknownVal(cty.String), - true, - }, - { - cty.StringVal("foo%2 bar"), - cty.UnknownVal(cty.String), - true, - }, - { - cty.StringVal("%GGfoo%2bar"), - cty.UnknownVal(cty.String), - true, - }, { cty.StringVal("foo%00, bar!"), cty.StringVal("foo%00, bar!"), @@ -372,6 +357,9 @@ func TestURLEncodeDecode(t *testing.T) { for _, test := range tests { t.Run(fmt.Sprintf("url encode decode(%#v)", test.String), func(t *testing.T) { encoded, err := URLEncode(test.String) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } got, err := URLDecode(encoded) if test.Err {