From e953d80dff4298bccb4bc96e80e2a0e5831936f5 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Tue, 5 Nov 2024 13:29:51 +0100 Subject: [bugfix] Fix setting immediate `expires_at` value on filter endpoints (#3513) * [bugfix] Fix setting immediate `expires_at` value on filter endpoints * update wording * update wording * oh my --- internal/api/client/statuses/statuscreate.go | 33 +++++++++++----------------- 1 file changed, 13 insertions(+), 20 deletions(-) (limited to 'internal/api/client/statuses/statuscreate.go') diff --git a/internal/api/client/statuses/statuscreate.go b/internal/api/client/statuses/statuscreate.go index 48d11f363..8198d5358 100644 --- a/internal/api/client/statuses/statuscreate.go +++ b/internal/api/client/statuses/statuscreate.go @@ -21,7 +21,6 @@ import ( "errors" "fmt" "net/http" - "strconv" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" @@ -474,25 +473,19 @@ func validateStatusPoll(form *apimodel.StatusCreateRequest) gtserror.WithCode { } // Normalize poll expiry if necessary. - // If we parsed this as JSON, expires_in - // may be either a float64 or a string. - if ei := form.Poll.ExpiresInI; ei != nil { - switch e := ei.(type) { - case float64: - form.Poll.ExpiresIn = int(e) - - case string: - expiresIn, err := strconv.Atoi(e) - if err != nil { - text := fmt.Sprintf("could not parse expires_in value %s as integer: %v", e, err) - return gtserror.NewErrorBadRequest(errors.New(text), text) - } - - form.Poll.ExpiresIn = expiresIn - - default: - text := fmt.Sprintf("could not parse expires_in type %T as integer", ei) - return gtserror.NewErrorBadRequest(errors.New(text), text) + if form.Poll.ExpiresInI != nil { + // If we parsed this as JSON, expires_in + // may be either a float64 or a string. + expiresIn, err := apiutil.ParseDuration( + form.Poll.ExpiresInI, + "expires_in", + ) + if err != nil { + return gtserror.NewErrorBadRequest(err, err.Error()) + } + + if expiresIn != nil { + form.Poll.ExpiresIn = *expiresIn } } -- cgit v1.2.3