Skip to content

Commit 74f5c6a

Browse files
feat(internal): support comma format in multipart form encoding
1 parent 05d2048 commit 74f5c6a

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

internal/apiform/encoder.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,18 @@ func (e *encoder) newPrimitiveTypeEncoder(t reflect.Type) encoderFunc {
183183
func (e *encoder) newArrayTypeEncoder(t reflect.Type) encoderFunc {
184184
itemEncoder := e.typeEncoder(t.Elem())
185185
keyFn := e.arrayKeyEncoder()
186+
if e.arrayFmt == "comma" {
187+
return func(key string, v reflect.Value, writer *multipart.Writer) error {
188+
if v.Len() == 0 {
189+
return nil
190+
}
191+
elements := make([]string, v.Len())
192+
for i := 0; i < v.Len(); i++ {
193+
elements[i] = fmt.Sprint(v.Index(i).Interface())
194+
}
195+
return writer.WriteField(key, strings.Join(elements, ","))
196+
}
197+
}
186198
return func(key string, v reflect.Value, writer *multipart.Writer) error {
187199
if keyFn == nil {
188200
return fmt.Errorf("apiform: unsupported array format")

0 commit comments

Comments
 (0)