4 Commits

Author SHA1 Message Date
kayos
85bc7b2007 Fix: check errors before checking pointer receiver (!) (#4) 2023-08-12 12:32:19 -07:00
fzqxzhang
261398509a feat: model_id tag add omitempty (#3) 2023-07-25 15:43:48 +00:00
Marcel Molina
b925ef1471 Fix compile error from variable typo (#2)
* Fix compile error from variable typo

* bytes.Buffer pointer
2023-07-09 16:00:45 +00:00
e095a7ec13 don't check resposne code before checcking err !=nil 2023-06-27 12:31:56 -07:00
6 changed files with 50 additions and 55 deletions

View File

@@ -151,14 +151,14 @@ func (c Client) HistoryDownloadAudioWriter(ctx context.Context, w io.Writer, ID
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "audio/mpeg") req.Header.Set("accept", "audio/mpeg")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return ErrUnauthorized return ErrUnauthorized
case 200: case 200:
if err != nil {
return err
}
defer res.Body.Close() defer res.Body.Close()
io.Copy(w, res.Body) io.Copy(w, res.Body)
return nil return nil
@@ -188,14 +188,14 @@ func (c Client) HistoryDownloadAudio(ctx context.Context, ID string) ([]byte, er
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "audio/mpeg") req.Header.Set("accept", "audio/mpeg")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return []byte{}, err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return []byte{}, ErrUnauthorized return []byte{}, ErrUnauthorized
case 200: case 200:
if err != nil {
return []byte{}, err
}
b := bytes.Buffer{} b := bytes.Buffer{}
w := bufio.NewWriter(&b) w := bufio.NewWriter(&b)
@@ -228,15 +228,14 @@ func (c Client) GetHistoryItemList(ctx context.Context) ([]types.HistoryItemList
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "application/json") req.Header.Set("accept", "application/json")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return []types.HistoryItemList{}, err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return []types.HistoryItemList{}, ErrUnauthorized return []types.HistoryItemList{}, ErrUnauthorized
case 200: case 200:
if err != nil {
return []types.HistoryItemList{}, err
}
var history types.GetHistoryResponse var history types.GetHistoryResponse
defer res.Body.Close() defer res.Body.Close()
jerr := json.NewDecoder(res.Body).Decode(&history) jerr := json.NewDecoder(res.Body).Decode(&history)

View File

@@ -25,14 +25,13 @@ func (c Client) DeleteVoiceSample(ctx context.Context, voiceID, sampleID string)
req.Header.Set("xi-api-key", c.apiKey) req.Header.Set("xi-api-key", c.apiKey)
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return false, err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return false, ErrUnauthorized return false, ErrUnauthorized
case 200: case 200:
if err != nil {
return false, err
}
return true, nil return true, nil
case 422: case 422:
fallthrough fallthrough
@@ -60,14 +59,14 @@ func (c Client) DownloadVoiceSampleWriter(ctx context.Context, w io.Writer, voic
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "audio/mpeg") req.Header.Set("accept", "audio/mpeg")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return ErrUnauthorized return ErrUnauthorized
case 200: case 200:
if err != nil {
return err
}
defer res.Body.Close() defer res.Body.Close()
io.Copy(w, res.Body) io.Copy(w, res.Body)
return nil return nil
@@ -97,14 +96,14 @@ func (c Client) DownloadVoiceSample(ctx context.Context, voiceID, sampleID strin
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "audio/mpeg") req.Header.Set("accept", "audio/mpeg")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return []byte{}, err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return []byte{}, ErrUnauthorized return []byte{}, ErrUnauthorized
case 200: case 200:
if err != nil {
return []byte{}, err
}
b := bytes.Buffer{} b := bytes.Buffer{}
w := bufio.NewWriter(&b) w := bufio.NewWriter(&b)

View File

@@ -1,7 +1,6 @@
package client package client
import ( import (
"bufio"
"bytes" "bytes"
"context" "context"
"encoding/json" "encoding/json"
@@ -74,19 +73,17 @@ func (c Client) TTS(ctx context.Context, text, voiceID, modelID string, options
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "audio/mpeg") req.Header.Set("accept", "audio/mpeg")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return []byte{}, err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return []byte{}, ErrUnauthorized return []byte{}, ErrUnauthorized
case 200: case 200:
if err != nil {
return []byte{}, err
}
b := bytes.Buffer{} b := bytes.Buffer{}
w := bufio.NewWriter(&b)
defer res.Body.Close() defer res.Body.Close()
io.Copy(w, res.Body) io.Copy(&b, res.Body)
return b.Bytes(), nil return b.Bytes(), nil
case 422: case 422:
fallthrough fallthrough
@@ -120,14 +117,13 @@ func (c Client) TTSStream(ctx context.Context, w io.Writer, text, voiceID string
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "audio/mpeg") req.Header.Set("accept", "audio/mpeg")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return ErrUnauthorized return ErrUnauthorized
case 200: case 200:
if err != nil {
return err
}
defer res.Body.Close() defer res.Body.Close()
io.Copy(w, res.Body) io.Copy(w, res.Body)
return nil return nil

View File

@@ -19,7 +19,7 @@ type Voice struct {
Labels string `json:"labels,omitempty"` // Serialized labels dictionary for the voice. Labels string `json:"labels,omitempty"` // Serialized labels dictionary for the voice.
} }
type TTS struct { type TTS struct {
ModelID string `json:"model_id"` ModelID string `json:"model_id,omitempty"`
Text string `json:"text"` // The text that will get converted into speech. Currently only English text is supported. Text string `json:"text"` // The text that will get converted into speech. Currently only English text is supported.
VoiceSettings SynthesisOptions `json:"voice_settings,omitempty"` // Voice settings are applied only on the given TTS request. VoiceSettings SynthesisOptions `json:"voice_settings,omitempty"` // Voice settings are applied only on the given TTS request.
} }

View File

@@ -20,15 +20,13 @@ func (c Client) GetUserInfo(ctx context.Context) (types.UserResponseModel, error
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "application/json") req.Header.Set("accept", "application/json")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return types.UserResponseModel{}, err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return types.UserResponseModel{}, ErrUnauthorized return types.UserResponseModel{}, ErrUnauthorized
case 200: case 200:
if err != nil {
return types.UserResponseModel{}, err
}
var user types.UserResponseModel var user types.UserResponseModel
defer res.Body.Close() defer res.Body.Close()
jerr := json.NewDecoder(res.Body).Decode(&user) jerr := json.NewDecoder(res.Body).Decode(&user)
@@ -53,5 +51,8 @@ func (c Client) GetUserInfo(ctx context.Context) (types.UserResponseModel, error
func (c Client) GetSubscriptionInfo(ctx context.Context) (types.Subscription, error) { func (c Client) GetSubscriptionInfo(ctx context.Context) (types.Subscription, error) {
info, err := c.GetUserInfo(ctx) info, err := c.GetUserInfo(ctx)
if err != nil {
return types.Subscription{}, err
}
return info.Subscription, err return info.Subscription, err
} }

View File

@@ -44,13 +44,13 @@ func (c Client) CreateVoice(ctx context.Context, name, description string, label
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "application/json") req.Header.Set("accept", "application/json")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return ErrUnauthorized return ErrUnauthorized
case 200: case 200:
if err != nil {
return err
}
return nil return nil
case 422: case 422:
fallthrough fallthrough
@@ -78,13 +78,13 @@ func (c Client) DeleteVoice(ctx context.Context, voiceID string) error {
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "application/json") req.Header.Set("accept", "application/json")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return ErrUnauthorized return ErrUnauthorized
case 200: case 200:
if err != nil {
return err
}
return nil return nil
case 422: case 422:
fallthrough fallthrough
@@ -114,13 +114,13 @@ func (c Client) EditVoiceSettings(ctx context.Context, voiceID string, settings
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "application/json") req.Header.Set("accept", "application/json")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return ErrUnauthorized return ErrUnauthorized
case 200: case 200:
if err != nil {
return err
}
so := types.SynthesisOptions{} so := types.SynthesisOptions{}
defer res.Body.Close() defer res.Body.Close()
jerr := json.NewDecoder(res.Body).Decode(&so) jerr := json.NewDecoder(res.Body).Decode(&so)
@@ -172,13 +172,13 @@ func (c Client) EditVoice(ctx context.Context, voiceID, name, description string
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "application/json") req.Header.Set("accept", "application/json")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return ErrUnauthorized return ErrUnauthorized
case 200: case 200:
if err != nil {
return err
}
return nil return nil
case 422: case 422:
fallthrough fallthrough
@@ -206,13 +206,13 @@ func (c Client) defaultVoiceSettings(ctx context.Context) (types.SynthesisOption
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "application/json") req.Header.Set("accept", "application/json")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return types.SynthesisOptions{}, err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return types.SynthesisOptions{}, ErrUnauthorized return types.SynthesisOptions{}, ErrUnauthorized
case 200: case 200:
if err != nil {
return types.SynthesisOptions{}, err
}
so := types.SynthesisOptions{} so := types.SynthesisOptions{}
defer res.Body.Close() defer res.Body.Close()
jerr := json.NewDecoder(res.Body).Decode(&so) jerr := json.NewDecoder(res.Body).Decode(&so)
@@ -246,13 +246,13 @@ func (c Client) GetVoiceSettings(ctx context.Context, voiceID string) (types.Syn
req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs") req.Header.Set("User-Agent", "github.com/taigrr/elevenlabs")
req.Header.Set("accept", "application/json") req.Header.Set("accept", "application/json")
res, err := client.Do(req) res, err := client.Do(req)
if err != nil {
return types.SynthesisOptions{}, err
}
switch res.StatusCode { switch res.StatusCode {
case 401: case 401:
return types.SynthesisOptions{}, ErrUnauthorized return types.SynthesisOptions{}, ErrUnauthorized
case 200: case 200:
if err != nil {
return types.SynthesisOptions{}, err
}
so := types.SynthesisOptions{} so := types.SynthesisOptions{}
defer res.Body.Close() defer res.Body.Close()
jerr := json.NewDecoder(res.Body).Decode(&so) jerr := json.NewDecoder(res.Body).Decode(&so)