From f6595e999fdf96c2bf6f8db98ca979736e2d0013 Mon Sep 17 00:00:00 2001
From: Jan Semmelink <jan@uafrica.com>
Date: Mon, 25 Oct 2021 08:29:07 +0200
Subject: [PATCH] Proper support for CSV parsing in param values written as
 ["123","456"]

---
 api/context.go | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/api/context.go b/api/context.go
index 637b60a..134c556 100644
--- a/api/context.go
+++ b/api/context.go
@@ -1,6 +1,7 @@
 package api
 
 import (
+	"encoding/csv"
 	"encoding/json"
 	"reflect"
 	"strings"
@@ -101,7 +102,12 @@ func (ctx apiContext) extract(name string, t reflect.Type, v reflect.Value) erro
 		var paramStrValues []string
 		if paramStrValue, isDefined := ctx.request.QueryStringParameters[n]; isDefined {
 			if len(paramStrValue) >= 2 && paramStrValue[0] == '[' && paramStrValue[len(paramStrValue)-1] == ']' {
-				paramStrValues = strings.Split(paramStrValue[1:len(paramStrValue)-1], ",") //from [CSV]
+				csvReader := csv.NewReader(strings.NewReader(paramStrValue))
+				var err error
+				paramStrValues, err = csvReader.Read()
+				if err != nil {
+					return errors.Wrapf(err, "invalid CSV")
+				}
 			} else {
 				paramStrValues = []string{paramStrValue} //single value
 			}
-- 
GitLab