internal/apiquery/richparam.go (17 lines of code) (raw):
package apiquery
import (
"reflect"
"github.com/openai/openai-go/packages/param"
)
func (e *encoder) newRichFieldTypeEncoder(t reflect.Type) encoderFunc {
f, _ := t.FieldByName("Value")
enc := e.typeEncoder(f.Type)
return func(key string, value reflect.Value) ([]Pair, error) {
if fielder, ok := value.Interface().(param.Optional); ok && fielder.IsPresent() {
return enc(key, value.FieldByIndex(f.Index))
} else if ok && fielder.IsNull() {
return []Pair{{key, "null"}}, nil
}
return nil, nil
}
}