mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-08 07:23:10 -06:00
mediaapi/storage: Rework GetMediaMetadata API to return new MediaMetadata
This commit is contained in:
parent
2fca4bbd65
commit
28ef35d36a
|
|
@ -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
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue