From 81737024f1d39c022d7901de380a5d87df70d4b4 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 4 May 2026 08:26:08 +0300 Subject: task 9: Centralize file extension and media type mappings in internal/mediatype Create a new internal/mediatype package with a single source of truth for: - Extension-to-media-type mappings (TypeForExt) - Extension-to-MIME mappings (MIMETypeForExt) - Supported extension checks (IsSupportedExt, IsImageExt, IsCoverImageExt) Replace duplicated logic across: - internal/service/service.go (supportedExtensions, guessMediaType) - internal/scanner/scanner.go (mediaExtensions, imageExtensions, mediaTypeFromExt) - internal/api/handlers.go (probe.MimeTypeForFilename) - internal/probe/probe.go (imageExtensions, isImagePath) - internal/probe/remux.go (MimeTypeForFilename) Divergent defaults unified: both scanner and service now default unknown extensions to video (model.MediaTypeVideo) via mediatype.TypeForExt. Update tests to use mediatype package and remove obsolete scanner tests. Update AGENTS.md to reflect the new package. --- internal/service/write.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'internal/service/write.go') diff --git a/internal/service/write.go b/internal/service/write.go index af0c839..190add8 100644 --- a/internal/service/write.go +++ b/internal/service/write.go @@ -10,6 +10,7 @@ import ( "strings" "codeberg.org/snonux/player/internal/clock" + "codeberg.org/snonux/player/internal/mediatype" "codeberg.org/snonux/player/internal/model" "codeberg.org/snonux/player/internal/probe" "codeberg.org/snonux/player/internal/repository" @@ -67,7 +68,7 @@ func (s *writeService) UploadMedia(ctx context.Context, setID, userID int64, fil return nil, err } - if !isSupportedExtension(filename) { + if !mediatype.IsSupportedExt(filename) { return nil, fmt.Errorf("%w: %s", ErrUnsupportedExtension, filepath.Ext(filename)) } @@ -163,7 +164,7 @@ func (s *writeService) saveUploadedMedia(ctx context.Context, setID int64, path RelPath: filepath.Base(path), FileName: filepath.Base(path), AbsPath: path, - Type: guessMediaType(filepath.Base(path)), + Type: mediatype.TypeForExt(filepath.Base(path)), FileSizeBytes: n, CreatedAt: now, } -- cgit v1.2.3