1package apiform
2
3import (
4 "github.com/openai/openai-go/packages/param"
5 "mime/multipart"
6 "reflect"
7)
8
9func (e *encoder) newRichFieldTypeEncoder(t reflect.Type, underlyingValueIdx []int) encoderFunc {
10 underlying := t.FieldByIndex(underlyingValueIdx)
11 primitiveEncoder := e.newPrimitiveTypeEncoder(underlying.Type)
12 return func(key string, value reflect.Value, writer *multipart.Writer) error {
13 if opt, ok := value.Interface().(param.Optional); ok && opt.IsPresent() {
14 return primitiveEncoder(key, value.FieldByIndex(underlyingValueIdx), writer)
15 } else if ok && opt.IsNull() {
16 return writer.WriteField(key, "null")
17 }
18 return nil
19 }
20}