* Move form_uilder into internal pkg. * Fix import of audio.go * Reorganize. * Fix import. * Fix --------- Co-authored-by: JoyShi <joy.shi@sap.com>
50 lines
1002 B
Go
50 lines
1002 B
Go
package openai
|
|
|
|
import (
|
|
"io"
|
|
"mime/multipart"
|
|
"os"
|
|
)
|
|
|
|
type FormBuilder interface {
|
|
CreateFormFile(fieldname string, file *os.File) error
|
|
WriteField(fieldname, value string) error
|
|
Close() error
|
|
FormDataContentType() string
|
|
}
|
|
|
|
type DefaultFormBuilder struct {
|
|
writer *multipart.Writer
|
|
}
|
|
|
|
func NewFormBuilder(body io.Writer) *DefaultFormBuilder {
|
|
return &DefaultFormBuilder{
|
|
writer: multipart.NewWriter(body),
|
|
}
|
|
}
|
|
|
|
func (fb *DefaultFormBuilder) CreateFormFile(fieldname string, file *os.File) error {
|
|
fieldWriter, err := fb.writer.CreateFormFile(fieldname, file.Name())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err = io.Copy(fieldWriter, file)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (fb *DefaultFormBuilder) WriteField(fieldname, value string) error {
|
|
return fb.writer.WriteField(fieldname, value)
|
|
}
|
|
|
|
func (fb *DefaultFormBuilder) Close() error {
|
|
return fb.writer.Close()
|
|
}
|
|
|
|
func (fb *DefaultFormBuilder) FormDataContentType() string {
|
|
return fb.writer.FormDataContentType()
|
|
}
|