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.
func (d *Database) GetMediaMetadata(mediaID types.MediaID, mediaOrigin gomatrixserverlib.ServerName, mediaMetadata *types.MediaMetadata) error {
metadata, err := 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
func (d *Database) GetMediaMetadata(mediaID types.MediaID, mediaOrigin gomatrixserverlib.ServerName) (*types.MediaMetadata, error) {
return d.statements.selectMedia(mediaID, mediaOrigin)
}

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
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 we have a record, we can respond from the local file
r.MediaMetadata = mediaMetadata
r.respondFromLocalFile(w, cfg.BasePath)
return
} 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++ {
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 we have a record, we can respond from the local file
r.MediaMetadata = mediaMetadata
r.respondFromLocalFile(w, cfg.BasePath)
activeRemoteRequests.Unlock()
return

View file

@ -194,8 +194,9 @@ func Upload(req *http.Request, cfg *config.MediaAPI, db *storage.Database) util.
}).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
err = db.GetMediaMetadata(r.MediaMetadata.MediaID, r.MediaMetadata.Origin, &types.MediaMetadata{})
mediaMetadata, err := db.GetMediaMetadata(r.MediaMetadata.MediaID, r.MediaMetadata.Origin)
if err == nil {
r.MediaMetadata = mediaMetadata
removeDir(tmpDir, logger)
return util.JSONResponse{
Code: 200,