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

Method newStructUnionTypeEncoder

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

Source from the content-addressed store, hash-verified

323var paramUnionType = reflect.TypeOf((*param.APIUnion)(nil)).Elem()
324
325func (e *encoder) newStructUnionTypeEncoder(t reflect.Type) encoderFunc {
326 var fieldEncoders []encoderFunc
327 for i := 0; i < t.NumField(); i++ {
328 field := t.Field(i)
329 if field.Type == paramUnionType && field.Anonymous {
330 fieldEncoders = append(fieldEncoders, nil)
331 continue
332 }
333 fieldEncoders = append(fieldEncoders, e.typeEncoder(field.Type))
334 }
335
336 return func(key string, value reflect.Value, writer *multipart.Writer) error {
337 for i := 0; i < t.NumField(); i++ {
338 if value.Field(i).Type() == paramUnionType {
339 continue
340 }
341 if !value.Field(i).IsZero() {
342 return fieldEncoders[i](key, value.Field(i), writer)
343 }
344 }
345 return fmt.Errorf("apiform: union %s has no field set", t.String())
346 }
347}
348
349func (e *encoder) newTimeTypeEncoder() encoderFunc {
350 format := e.dateFormat

Callers 1

newStructTypeEncoderMethod · 0.95

Calls 3

typeEncoderMethod · 0.95
IsZeroMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected