From d83359dd51041cc652408d11ff5b0f2052bcad27 Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Fri, 26 May 2017 17:24:13 +0200 Subject: [PATCH] mediaapi: Remove unnecessary ContentDisposition Content-Disposition is only used for communicating the filename. It does not need to be stored in the database as we have upload_name anyway. It does not need to be in types.MediaMetadata and does not need to be logged. --- .../storage/media_repository_table.go | 10 ++--- .../dendrite/mediaapi/types/types.go | 20 ++++------ .../dendrite/mediaapi/writers/upload.go | 37 +++++++------------ 3 files changed, 25 insertions(+), 42 deletions(-) diff --git a/src/github.com/matrix-org/dendrite/mediaapi/storage/media_repository_table.go b/src/github.com/matrix-org/dendrite/mediaapi/storage/media_repository_table.go index a3b1c7594..e4a4cbf83 100644 --- a/src/github.com/matrix-org/dendrite/mediaapi/storage/media_repository_table.go +++ b/src/github.com/matrix-org/dendrite/mediaapi/storage/media_repository_table.go @@ -34,8 +34,6 @@ CREATE TABLE IF NOT EXISTS media_repository ( media_origin TEXT NOT NULL, -- The MIME-type of the media file as specified when uploading. content_type TEXT NOT NULL, - -- The HTTP Content-Disposition header for the media file as specified when uploading. - content_disposition TEXT NOT NULL, -- Size of the media file in bytes. file_size_bytes BIGINT NOT NULL, -- When the content was uploaded in UNIX epoch ms. @@ -51,12 +49,12 @@ CREATE UNIQUE INDEX IF NOT EXISTS media_repository_index ON media_repository (me ` const insertMediaSQL = ` -INSERT INTO media_repository (media_id, media_origin, content_type, content_disposition, file_size_bytes, creation_ts, upload_name, base64hash, user_id) - VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) +INSERT INTO media_repository (media_id, media_origin, content_type, file_size_bytes, creation_ts, upload_name, base64hash, user_id) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8) ` const selectMediaSQL = ` -SELECT content_type, content_disposition, file_size_bytes, creation_ts, upload_name, base64hash, user_id FROM media_repository WHERE media_id = $1 AND media_origin = $2 +SELECT content_type, file_size_bytes, creation_ts, upload_name, base64hash, user_id FROM media_repository WHERE media_id = $1 AND media_origin = $2 ` type mediaStatements struct { @@ -82,7 +80,6 @@ func (s *mediaStatements) insertMedia(mediaMetadata *types.MediaMetadata) error mediaMetadata.MediaID, mediaMetadata.Origin, mediaMetadata.ContentType, - mediaMetadata.ContentDisposition, mediaMetadata.FileSizeBytes, mediaMetadata.CreationTimestamp, mediaMetadata.UploadName, @@ -101,7 +98,6 @@ func (s *mediaStatements) selectMedia(mediaID types.MediaID, mediaOrigin gomatri mediaMetadata.MediaID, mediaMetadata.Origin, ).Scan( &mediaMetadata.ContentType, - &mediaMetadata.ContentDisposition, &mediaMetadata.FileSizeBytes, &mediaMetadata.CreationTimestamp, &mediaMetadata.UploadName, diff --git a/src/github.com/matrix-org/dendrite/mediaapi/types/types.go b/src/github.com/matrix-org/dendrite/mediaapi/types/types.go index a3065bf8d..ac18f5fe2 100644 --- a/src/github.com/matrix-org/dendrite/mediaapi/types/types.go +++ b/src/github.com/matrix-org/dendrite/mediaapi/types/types.go @@ -20,9 +20,6 @@ import ( "github.com/matrix-org/gomatrixserverlib" ) -// ContentDisposition is an HTTP Content-Disposition header string -type ContentDisposition string - // FileSizeBytes is a file size in bytes type FileSizeBytes int64 @@ -52,15 +49,14 @@ type UnixMs int64 // MediaMetadata is metadata associated with a media file type MediaMetadata struct { - MediaID MediaID - Origin gomatrixserverlib.ServerName - ContentType ContentType - ContentDisposition ContentDisposition - FileSizeBytes FileSizeBytes - CreationTimestamp UnixMs - UploadName Filename - Base64Hash Base64Hash - UserID MatrixUserID + MediaID MediaID + Origin gomatrixserverlib.ServerName + ContentType ContentType + FileSizeBytes FileSizeBytes + CreationTimestamp UnixMs + UploadName Filename + Base64Hash Base64Hash + UserID MatrixUserID } // ActiveRemoteRequests is a lockable map of media URIs requested from remote homeservers diff --git a/src/github.com/matrix-org/dendrite/mediaapi/writers/upload.go b/src/github.com/matrix-org/dendrite/mediaapi/writers/upload.go index bcaaa2556..5b2532f0a 100644 --- a/src/github.com/matrix-org/dendrite/mediaapi/writers/upload.go +++ b/src/github.com/matrix-org/dendrite/mediaapi/writers/upload.go @@ -57,11 +57,10 @@ func Upload(req *http.Request, cfg *config.MediaAPI, db *storage.Database) util. } r.Logger.WithFields(log.Fields{ - "Origin": r.MediaMetadata.Origin, - "UploadName": r.MediaMetadata.UploadName, - "FileSizeBytes": r.MediaMetadata.FileSizeBytes, - "Content-Type": r.MediaMetadata.ContentType, - "Content-Disposition": r.MediaMetadata.ContentDisposition, + "Origin": r.MediaMetadata.Origin, + "UploadName": r.MediaMetadata.UploadName, + "FileSizeBytes": r.MediaMetadata.FileSizeBytes, + "Content-Type": r.MediaMetadata.ContentType, }).Info("Uploading file") // The file data is hashed and the hash is used as the MediaID. The hash is useful as a @@ -89,13 +88,12 @@ func Upload(req *http.Request, cfg *config.MediaAPI, db *storage.Database) util. r.MediaMetadata.MediaID = types.MediaID(hash) r.Logger.WithFields(log.Fields{ - "MediaID": r.MediaMetadata.MediaID, - "Origin": r.MediaMetadata.Origin, - "Base64Hash": r.MediaMetadata.Base64Hash, - "UploadName": r.MediaMetadata.UploadName, - "FileSizeBytes": r.MediaMetadata.FileSizeBytes, - "Content-Type": r.MediaMetadata.ContentType, - "Content-Disposition": r.MediaMetadata.ContentDisposition, + "MediaID": r.MediaMetadata.MediaID, + "Origin": r.MediaMetadata.Origin, + "Base64Hash": r.MediaMetadata.Base64Hash, + "UploadName": r.MediaMetadata.UploadName, + "FileSizeBytes": r.MediaMetadata.FileSizeBytes, + "Content-Type": r.MediaMetadata.ContentType, }).Info("File uploaded") // check if we already have a record of the media in our database and if so, we can remove the temporary directory @@ -141,11 +139,10 @@ func parseAndValidateRequest(req *http.Request, cfg *config.MediaAPI) (*uploadRe r := &uploadRequest{ MediaMetadata: &types.MediaMetadata{ - Origin: cfg.ServerName, - ContentDisposition: types.ContentDisposition(req.Header.Get("Content-Disposition")), - FileSizeBytes: types.FileSizeBytes(req.ContentLength), - ContentType: types.ContentType(req.Header.Get("Content-Type")), - UploadName: types.Filename(url.PathEscape(req.FormValue("filename"))), + Origin: cfg.ServerName, + FileSizeBytes: types.FileSizeBytes(req.ContentLength), + ContentType: types.ContentType(req.Header.Get("Content-Type")), + UploadName: types.Filename(url.PathEscape(req.FormValue("filename"))), }, Logger: util.GetLogger(req.Context()), } @@ -154,12 +151,6 @@ func parseAndValidateRequest(req *http.Request, cfg *config.MediaAPI) (*uploadRe return nil, resErr } - if len(r.MediaMetadata.UploadName) > 0 { - r.MediaMetadata.ContentDisposition = types.ContentDisposition( - "inline; filename*=utf-8''" + string(r.MediaMetadata.UploadName), - ) - } - return r, nil }