@@ -26,35 +26,28 @@ const (
2626 None AuthType = "None"
2727)
2828
29- func parseTypedQuery (q url. Values ) map [ string ] interface {} {
30- result := make ( map [ string ] interface {})
29+ func parseTypedQuery (key string , values [] string ) interface {} {
30+ var result interface {}
3131
32- for key , values := range q {
33- if ! strings .HasPrefix (key , "@" ) {
34- continue
35- }
36-
37- cleanKey := strings .TrimPrefix (key , "@" )
38- raw := values [0 ]
32+ raw := values [0 ]
3933
40- intValue , err := strconv .Atoi (raw )
34+ intValue , err := strconv .Atoi (raw )
4135
42- if strings .Contains (raw , "," ) {
43- parts := strings .Split (raw , "," )
44- var list []interface {}
45- for _ , part := range parts {
46- if intVal , err := strconv .Atoi (part ); err == nil {
47- list = append (list , intVal )
48- } else {
49- list = append (list , part )
50- }
36+ if strings .Contains (raw , "," ) {
37+ parts := strings .Split (raw , "," )
38+ var list []interface {}
39+ for _ , part := range parts {
40+ if intVal , err := strconv .Atoi (part ); err == nil {
41+ list = append (list , intVal )
42+ } else {
43+ list = append (list , part )
5144 }
52- result [cleanKey ] = list
53- } else if err == nil {
54- result [cleanKey ] = intValue
55- } else {
56- result [cleanKey ] = raw
5745 }
46+ result = list
47+ } else if err == nil {
48+ result = intValue
49+ } else {
50+ result = raw
5851 }
5952
6053 return result
@@ -204,9 +197,19 @@ func TemplatingMiddleware(next http.Handler, VARIABLES map[string]string) http.H
204197 query , _ := renderTemplate ("query" , req .URL .RawQuery , VARIABLES )
205198
206199 modifiedQuery := req .URL .Query ()
207-
208- modifiedBodyData = parseTypedQuery (modifiedQuery )
209-
200+
201+ queryData , _ := url .ParseQuery (query )
202+
203+ for key , value := range queryData {
204+ keyWithoutPrefix , found := strings .CutPrefix (key , "@" )
205+
206+ if found {
207+ modifiedBodyData [keyWithoutPrefix ] = parseTypedQuery (key , value )
208+
209+ modifiedQuery .Del (key )
210+ }
211+ }
212+
210213 req .URL .RawQuery = modifiedQuery .Encode ()
211214
212215 modifiedBodyBytes , err = json .Marshal (modifiedBodyData )
0 commit comments