From c2d666b43477ea7042b574ad940c508216cb0e83 Mon Sep 17 00:00:00 2001 From: Gabriel Arakaki Giovanini Date: Mon, 3 Jul 2023 23:13:04 +0200 Subject: fix: Fix content type Content type was always being set to `text/html`. Also swap lib for processing thumbnail for something that accepts HEIC. --- pkg/worker/list_processor.go | 13 +++++++++++++ pkg/worker/thumbnail_scanner.go | 7 ++++--- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'pkg/worker') diff --git a/pkg/worker/list_processor.go b/pkg/worker/list_processor.go index 0a07085..c060583 100644 --- a/pkg/worker/list_processor.go +++ b/pkg/worker/list_processor.go @@ -16,6 +16,10 @@ type ( Process(context.Context, T) error } + OnFail[T any] interface { + OnFail(context.Context, T, error) + } + BatchProcessor[T any] interface { Query(context.Context) ([]T, error) Process(context.Context, T) error @@ -77,6 +81,12 @@ func (l *batchProcessorWorker[T]) Start(ctx context.Context) error { var wg sync.WaitGroup for _, v := range values { + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + wg.Add(1) l.scheduler.Take() go func(v T) { @@ -84,6 +94,9 @@ func (l *batchProcessorWorker[T]) Start(ctx context.Context) error { defer wg.Done() if err := l.batchProcessor.Process(ctx, v); err != nil && !errors.Is(err, context.Canceled) { l.logrus.WithError(err).Error("Error processing batch") + if failure, ok := l.batchProcessor.(OnFail[T]); ok { + failure.OnFail(ctx, v, err) + } } }(v) } diff --git a/pkg/worker/thumbnail_scanner.go b/pkg/worker/thumbnail_scanner.go index cc201b8..168abef 100644 --- a/pkg/worker/thumbnail_scanner.go +++ b/pkg/worker/thumbnail_scanner.go @@ -2,6 +2,7 @@ package worker import ( "context" + "fmt" "math" "os" "path" @@ -47,12 +48,12 @@ func (t *ThumbnailScanner) Process(ctx context.Context, media *repository.Media) if media.IsVideo() { err := fileop.EncodeVideoThumbnail(media.Path, output, 1080, 1080) if err != nil { - return err + return fmt.Errorf("Error thumbnail video %d; %w", media.ID, err) } } else { - err := fileop.EncodeImageThumbnail(media.Path, output, 1080, math.MaxInt) + err := fileop.EncodeImageThumbnail(media.Path, output, 1080, math.MinInt32) if err != nil { - return err + return fmt.Errorf("Error thumbnail image %d; %w", media.ID, err) } } -- cgit v1.2.3