openai/openai-go
Publicmirrored fromhttps://github.com/openai/openai-goAvailable
internal/apiform/richparam.go
20lines · modecode
| 1 | package apiform |
| 2 | |
| 3 | import ( |
| 4 | "github.com/openai/openai-go/v3/packages/param" |
| 5 | "mime/multipart" |
| 6 | "reflect" |
| 7 | ) |
| 8 | |
| 9 | func (e *encoder) newRichFieldTypeEncoder(t reflect.Type) encoderFunc { |
| 10 | f, _ := t.FieldByName("Value") |
| 11 | enc := e.newPrimitiveTypeEncoder(f.Type) |
| 12 | return func(key string, value reflect.Value, writer *multipart.Writer) error { |
| 13 | if opt, ok := value.Interface().(param.Optional); ok && opt.Valid() { |
| 14 | return enc(key, value.FieldByIndex(f.Index), writer) |
| 15 | } else if ok && param.IsNull(opt) { |
| 16 | return writer.WriteField(key, "null") |
| 17 | } |
| 18 | return nil |
| 19 | } |
| 20 | } |
| 21 | |