From 9331e86556662f014ca20bdad50ebb61a2f9414a Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Tue, 18 Apr 2023 18:07:31 -0700 Subject: [PATCH] attempt at create voice --- client/voices.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/client/voices.go b/client/voices.go index 400def4..b01e560 100644 --- a/client/voices.go +++ b/client/voices.go @@ -1,12 +1,16 @@ package client import ( + "bytes" "context" "encoding/json" "errors" "fmt" + "io" + "mime/multipart" "net/http" "os" + "strings" "github.com/taigrr/elevenlabs/client/types" ) @@ -15,11 +19,27 @@ func (c Client) CreateVoice(ctx context.Context, name, description string, label url := c.endpoint + "/v1/voices/add" client := &http.Client{} - // TODO create body here - req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, nil) + var b bytes.Buffer + w := multipart.NewWriter(&b) + for _, r := range files { + var fw io.Writer + var err error + if fw, err = w.CreateFormFile("files[]", r.Name()); err != nil { + return err + } + if _, err := io.Copy(fw, r); err != nil { + return err + } + } + w.WriteField("name", name) + w.WriteField("description", description) + w.WriteField("name", strings.Join(labels, ", ")) + w.Close() + req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, &b) if err != nil { return err } + req.Header.Set("Content-Type", w.FormDataContentType()) req.Header.Set("xi-api-key", c.apiKey) req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("accept", "application/json")