summaryrefslogtreecommitdiff
path: root/internal/processing
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-09-27 11:15:53 +0000
committerLibravatar GitHub <noreply@github.com>2024-09-27 13:15:53 +0200
commit497ebd8c4e9db9a1351b841cc7fe04c960fb7987 (patch)
treea729e3e83cc60a85b70ac052b2549c9ffb4e3d7d /internal/processing
parent[chore] final bits of fiddling with solarized (#3364) (diff)
downloadgotosocial-497ebd8c4e9db9a1351b841cc7fe04c960fb7987.tar.xz
[bugfix] fix media limit reader check (#3363)
* return nicer errors for frontend when media / emoji upload limit reached * fix reader limit check * add code comment
Diffstat (limited to 'internal/processing')
-rw-r--r--internal/processing/common/media.go24
1 files changed, 19 insertions, 5 deletions
diff --git a/internal/processing/common/media.go b/internal/processing/common/media.go
index 7baf30345..7957470cd 100644
--- a/internal/processing/common/media.go
+++ b/internal/processing/common/media.go
@@ -22,6 +22,7 @@ import (
"errors"
"fmt"
+ "github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/media"
@@ -51,11 +52,18 @@ func (p *Processor) StoreLocalMedia(
// Immediately trigger write to storage.
attachment, err := processing.Load(ctx)
- if err != nil {
- const text = "error processing emoji"
+ switch {
+ case gtserror.LimitReached(err):
+ limit := config.GetMediaLocalMaxSize()
+ text := fmt.Sprintf("local media size limit reached: %s", limit)
+ return nil, gtserror.NewErrorUnprocessableEntity(err, text)
+
+ case err != nil:
+ const text = "error processing media"
err := gtserror.Newf("error processing media: %w", err)
return nil, gtserror.NewErrorUnprocessableEntity(err, text)
- } else if attachment.Type == gtsmodel.FileTypeUnknown {
+
+ case attachment.Type == gtsmodel.FileTypeUnknown:
text := fmt.Sprintf("could not process %s type media", attachment.File.ContentType)
return nil, gtserror.NewErrorUnprocessableEntity(errors.New(text), text)
}
@@ -86,9 +94,15 @@ func (p *Processor) StoreLocalEmoji(
return nil, gtserror.NewErrorInternalError(err)
}
- // Immediately write to storage.
+ // Immediately trigger write to storage.
emoji, err := processing.Load(ctx)
- if err != nil {
+ switch {
+ case gtserror.LimitReached(err):
+ limit := config.GetMediaEmojiLocalMaxSize()
+ text := fmt.Sprintf("local emoji size limit reached: %s", limit)
+ return nil, gtserror.NewErrorUnprocessableEntity(err, text)
+
+ case err != nil:
const text = "error processing emoji"
err := gtserror.Newf("error processing emoji %s: %w", shortcode, err)
return nil, gtserror.NewErrorUnprocessableEntity(err, text)