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

Method newStructUnionTypeEncoder

internal/apiquery/encoder.go:214–236  ·  view source on GitHub ↗
(t reflect.Type)

Source from the content-addressed store, hash-verified

212var paramUnionType = reflect.TypeOf((*param.APIUnion)(nil)).Elem()
213
214func (e *encoder) newStructUnionTypeEncoder(t reflect.Type) encoderFunc {
215 var fieldEncoders []encoderFunc
216 for i := 0; i < t.NumField(); i++ {
217 field := t.Field(i)
218 if field.Type == paramUnionType && field.Anonymous {
219 fieldEncoders = append(fieldEncoders, nil)
220 continue
221 }
222 fieldEncoders = append(fieldEncoders, e.typeEncoder(field.Type))
223 }
224
225 return func(key string, value reflect.Value) (pairs []Pair, err error) {
226 for i := 0; i < t.NumField(); i++ {
227 if value.Field(i).Type() == paramUnionType {
228 continue
229 }
230 if !value.Field(i).IsZero() {
231 return fieldEncoders[i](key, value.Field(i))
232 }
233 }
234 return nil, fmt.Errorf("apiquery: union %s has no field set", t.String())
235 }
236}
237
238func (e *encoder) newMapEncoder(t reflect.Type) encoderFunc {
239 keyEncoder := e.typeEncoder(t.Key())

Callers 1

newStructTypeEncoderMethod · 0.95

Calls 3

typeEncoderMethod · 0.95
IsZeroMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected