(t reflect.Type)
| 181 | } |
| 182 | |
| 183 | func (e *encoder) newArrayTypeEncoder(t reflect.Type) encoderFunc { |
| 184 | itemEncoder := e.typeEncoder(t.Elem()) |
| 185 | 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 | } |
| 198 | return func(key string, v reflect.Value, writer *multipart.Writer) error { |
| 199 | if keyFn == nil { |
| 200 | return fmt.Errorf("apiform: unsupported array format") |
| 201 | } |
| 202 | for i := 0; i < v.Len(); i++ { |
| 203 | err := itemEncoder(keyFn(key, i), v.Index(i), writer) |
| 204 | if err != nil { |
| 205 | return err |
| 206 | } |
| 207 | } |
| 208 | return nil |
| 209 | } |
| 210 | } |
| 211 | |
| 212 | func (e *encoder) newStructTypeEncoder(t reflect.Type) encoderFunc { |
| 213 | if t.Implements(reflect.TypeOf((*param.Optional)(nil)).Elem()) { |
no test coverage detected