mediaapi/storage: Rework GetMediaMetadata API to return new MediaMetadata

This commit is contained in:
Robert Swain 2017-05-18 12:09:33 +02:00
parent 2fca4bbd65
commit 28ef35d36a
3 changed files with 8 additions and 12 deletions

View file

@ -48,13 +48,6 @@ func (d *Database) StoreMediaMetadata(mediaMetadata *types.MediaMetadata) error
} }
// GetMediaMetadata possibly selects the metadata about previously uploaded media from the database. // GetMediaMetadata possibly selects the metadata about previously uploaded media from the database.
func (d *Database) GetMediaMetadata(mediaID types.MediaID, mediaOrigin gomatrixserverlib.ServerName, mediaMetadata *types.MediaMetadata) error { func (d *Database) GetMediaMetadata(mediaID types.MediaID, mediaOrigin gomatrixserverlib.ServerName) (*types.MediaMetadata, error) {
metadata, err := d.statements.selectMedia(mediaID, mediaOrigin) return d.statements.selectMedia(mediaID, mediaOrigin)
mediaMetadata.ContentType = metadata.ContentType
mediaMetadata.ContentDisposition = metadata.ContentDisposition
mediaMetadata.ContentLength = metadata.ContentLength
mediaMetadata.CreationTimestamp = metadata.CreationTimestamp
mediaMetadata.UploadName = metadata.UploadName
mediaMetadata.UserID = metadata.UserID
return err
} }

View file

@ -115,10 +115,11 @@ func Download(w http.ResponseWriter, req *http.Request, origin gomatrixserverlib
} }
// check if we have a record of the media in our database // check if we have a record of the media in our database
err := db.GetMediaMetadata(r.MediaMetadata.MediaID, r.MediaMetadata.Origin, r.MediaMetadata) mediaMetadata, err := db.GetMediaMetadata(r.MediaMetadata.MediaID, r.MediaMetadata.Origin)
if err == nil { if err == nil {
// If we have a record, we can respond from the local file // If we have a record, we can respond from the local file
r.MediaMetadata = mediaMetadata
r.respondFromLocalFile(w, cfg.BasePath) r.respondFromLocalFile(w, cfg.BasePath)
return return
} else if err == sql.ErrNoRows && r.MediaMetadata.Origin != cfg.ServerName { } else if err == sql.ErrNoRows && r.MediaMetadata.Origin != cfg.ServerName {
@ -131,9 +132,10 @@ func Download(w http.ResponseWriter, req *http.Request, origin gomatrixserverlib
for tries := 0; ; tries++ { for tries := 0; ; tries++ {
activeRemoteRequests.Lock() activeRemoteRequests.Lock()
err = db.GetMediaMetadata(r.MediaMetadata.MediaID, r.MediaMetadata.Origin, r.MediaMetadata) mediaMetadata, err = db.GetMediaMetadata(r.MediaMetadata.MediaID, r.MediaMetadata.Origin)
if err == nil { if err == nil {
// If we have a record, we can respond from the local file // If we have a record, we can respond from the local file
r.MediaMetadata = mediaMetadata
r.respondFromLocalFile(w, cfg.BasePath) r.respondFromLocalFile(w, cfg.BasePath)
activeRemoteRequests.Unlock() activeRemoteRequests.Unlock()
return return

View file

@ -194,8 +194,9 @@ func Upload(req *http.Request, cfg *config.MediaAPI, db *storage.Database) util.
}).Info("File uploaded") }).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 // check if we already have a record of the media in our database and if so, we can remove the temporary directory
err = db.GetMediaMetadata(r.MediaMetadata.MediaID, r.MediaMetadata.Origin, &types.MediaMetadata{}) mediaMetadata, err := db.GetMediaMetadata(r.MediaMetadata.MediaID, r.MediaMetadata.Origin)
if err == nil { if err == nil {
r.MediaMetadata = mediaMetadata
removeDir(tmpDir, logger) removeDir(tmpDir, logger)
return util.JSONResponse{ return util.JSONResponse{
Code: 200, Code: 200,