From c24f2cb9db136b7559f8b1692ff2772d1a7f6a53 Mon Sep 17 00:00:00 2001 From: Niko Abeler Date: Wed, 19 Jul 2023 20:52:19 +0200 Subject: [PATCH] fix error with spaces in media name --- infra/binary_file_repository_test.go | 12 ++++++++++++ web/media_handler.go | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/infra/binary_file_repository_test.go b/infra/binary_file_repository_test.go index dcb6a5e..4bd7a82 100644 --- a/infra/binary_file_repository_test.go +++ b/infra/binary_file_repository_test.go @@ -45,3 +45,15 @@ func TestBinaryRepoNoSideEffect(t *testing.T) { require.Equal(t, file2.Name, "name2") require.Equal(t, file2.Data, []byte("222")) } + +func TestBinaryWithSpaceInName(t *testing.T) { + repo := setupBinaryRepo() + + file, err := repo.Create("name with space", []byte("111"), nil) + require.NoError(t, err) + + file, err = repo.FindById(file.Id) + require.NoError(t, err) + require.Equal(t, file.Name, "name with space") + require.Equal(t, file.Data, []byte("111")) +} diff --git a/web/media_handler.go b/web/media_handler.go index 3ee211e..71271d2 100644 --- a/web/media_handler.go +++ b/web/media_handler.go @@ -1,6 +1,7 @@ package web import ( + "net/url" "owl-blogs/app" "github.com/gofiber/fiber/v2" @@ -16,6 +17,11 @@ func NewMediaHandler(binaryService *app.BinaryService) *MediaHandler { func (h *MediaHandler) Handle(c *fiber.Ctx) error { id := c.Params("+") + // urldecode + id, err := url.PathUnescape(id) + if err != nil { + return err + } binary, err := h.binaryService.FindById(id) if err != nil { return err