MCPcopy
hub / github.com/openai/openai-go / newArrayTypeEncoder

Method newArrayTypeEncoder

internal/apiform/encoder.go:183–210  ·  view source on GitHub ↗
(t reflect.Type)

Source from the content-addressed store, hash-verified

181}
182
183func (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
212func (e *encoder) newStructTypeEncoder(t reflect.Type) encoderFunc {
213 if t.Implements(reflect.TypeOf((*param.Optional)(nil)).Elem()) {

Callers 1

newTypeEncoderMethod · 0.95

Calls 3

typeEncoderMethod · 0.95
arrayKeyEncoderMethod · 0.95
IndexMethod · 0.45

Tested by

no test coverage detected