From 5ad1aaeb6ad0d96119d70d61208a477f3eacb040 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Fri, 29 Mar 2024 00:47:33 -0400 Subject: [PATCH] refactor: pass mimetype to tus upload record and check a list of meta fields for it --- protocols/s5/tus.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/protocols/s5/tus.go b/protocols/s5/tus.go index f8ee3e3..164cb8c 100644 --- a/protocols/s5/tus.go +++ b/protocols/s5/tus.go @@ -188,7 +188,7 @@ func (t *TusHandler) Uploads(ctx context.Context, uploaderID uint) ([]models.Tus return uploads, nil } -func (t *TusHandler) CreateUpload(ctx context.Context, hash []byte, uploadID string, uploaderID uint, uploaderIP string, protocol string) (*models.TusUpload, error) { +func (t *TusHandler) CreateUpload(ctx context.Context, hash []byte, uploadID string, uploaderID uint, uploaderIP string, protocol string, mimeType string) (*models.TusUpload, error) { upload := &models.TusUpload{ Hash: hash, UploadID: uploadID, @@ -196,6 +196,7 @@ func (t *TusHandler) CreateUpload(ctx context.Context, hash []byte, uploadID str UploaderIP: uploaderIP, Uploader: models.User{}, Protocol: protocol, + MimeType: mimeType, } result := t.db.WithContext(ctx).Create(upload) @@ -512,7 +513,17 @@ func (t *TusHandler) worker() { continue } - _, err = t.CreateUpload(ctx, decodedHash.HashBytes(), info.Upload.ID, uploaderID, uploaderIP, t.storageProtocol.Name()) + var mimeType string + + for _, field := range []string{"mimeType", "mimetype", "filetype"} { + typ, ok := info.Upload.MetaData[field] + if ok { + mimeType = typ + break + } + } + + _, err = t.CreateUpload(ctx, decodedHash.HashBytes(), info.Upload.ID, uploaderID, uploaderIP, t.storageProtocol.Name(), mimeType) mutex.(*sync.Mutex).Unlock() if err != nil { errorResponse.Body = "Could not create tus upload"