From 8c86c21d77e7fb18aeee91c86d9c8416e53be10f Mon Sep 17 00:00:00 2001 From: Jan-Lukas Else Date: Tue, 24 Jan 2023 14:59:01 +0100 Subject: [PATCH] Two base64 fixes --- search.go | 11 ++--------- tts.go | 8 ++------ 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/search.go b/search.go index c38828f..621543b 100644 --- a/search.go +++ b/search.go @@ -4,9 +4,7 @@ import ( "context" "encoding/base64" "net/http" - "net/url" "path" - "strings" ) const defaultSearchPath = "/search" @@ -38,16 +36,11 @@ func (a *goBlog) serveSearchResult(w http.ResponseWriter, r *http.Request) { } func searchEncode(search string) string { - return url.PathEscape(strings.ReplaceAll(base64.StdEncoding.EncodeToString([]byte(search)), "/", "_")) + return base64.URLEncoding.EncodeToString([]byte(search)) } func searchDecode(encoded string) string { - encoded, err := url.PathUnescape(encoded) - if err != nil { - return "" - } - encoded = strings.ReplaceAll(encoded, "_", "/") - db, err := base64.StdEncoding.DecodeString(encoded) + db, err := base64.URLEncoding.DecodeString(encoded) if err != nil { return "" } diff --git a/tts.go b/tts.go index e345093..63f5ca4 100644 --- a/tts.go +++ b/tts.go @@ -221,12 +221,8 @@ func (a *goBlog) createTTSAudio(lang, ssml string, w io.Writer) error { // Decode response if encoded, ok := response["audioContent"]; ok { if encodedStr, ok := encoded.(string); ok { - if audio, err := base64.StdEncoding.DecodeString(encodedStr); err == nil { - _, err := w.Write(audio) - return err - } else { - return err - } + _, err := io.Copy(w, base64.NewDecoder(base64.StdEncoding, strings.NewReader(encodedStr))) + return err } } return errors.New("no audio content")