mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-08 15:33:09 -06:00
mediaapi/fileutils: Improve function name and API docs
This commit is contained in:
parent
f6f33e8068
commit
0fcf74014d
|
|
@ -186,12 +186,11 @@ func WriteTempFile(reqReader io.Reader, maxFileSizeBytes types.FileSizeBytes, ab
|
||||||
return types.Base64Hash(base64.URLEncoding.EncodeToString(hash[:])), types.FileSizeBytes(bytesResponded), types.FileSizeBytes(bytesWritten), tmpDir, nil
|
return types.Base64Hash(base64.URLEncoding.EncodeToString(hash[:])), types.FileSizeBytes(bytesResponded), types.FileSizeBytes(bytesWritten), tmpDir, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPathFromMediaMetadata validates and constructs the on-disk path to the media
|
// GetPathFromBase64Hash evaluates the path to a media file from its Base64Hash
|
||||||
// based on its Base64Hash
|
|
||||||
// If the Base64Hash is long enough, we split it into pieces, creating up to 2 subdirectories
|
// If the Base64Hash is long enough, we split it into pieces, creating up to 2 subdirectories
|
||||||
// for more manageable browsing and use the remainder as the file name.
|
// for more manageable browsing and use the remainder as the file name.
|
||||||
// For example, if Base64Hash is 'qwerty', the path will be 'q/w/erty'.
|
// For example, if Base64Hash is 'qwerty', the path will be 'q/w/erty'.
|
||||||
func GetPathFromMediaMetadata(base64Hash types.Base64Hash, absBasePath types.Path) (string, error) {
|
func GetPathFromBase64Hash(base64Hash types.Base64Hash, absBasePath types.Path) (string, error) {
|
||||||
var subPath, fileName string
|
var subPath, fileName string
|
||||||
|
|
||||||
hashLen := len(base64Hash)
|
hashLen := len(base64Hash)
|
||||||
|
|
@ -249,14 +248,14 @@ func moveFile(src types.Path, dst types.Path) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// MoveFileWithHashCheck attempts to move the file src to dst and checks for hash collisions based on metadata
|
// MoveFileWithHashCheck checks for hash collisions when moving a temporary file to its destination based on metadata
|
||||||
// Check if destination file exists. As the destination is based on a hash of the file data,
|
// Check if destination file exists. As the destination is based on a hash of the file data,
|
||||||
// if it exists and the file size does not match then there is a hash collision for two different files. If
|
// if it exists and the file size does not match then there is a hash collision for two different files. If
|
||||||
// it exists and the file size matches, it is believable that it is the same file and we can just
|
// it exists and the file size matches, it is believable that it is the same file and we can just
|
||||||
// discard the temporary file.
|
// discard the temporary file.
|
||||||
func MoveFileWithHashCheck(tmpDir types.Path, mediaMetadata *types.MediaMetadata, absBasePath types.Path, logger *log.Entry) (string, bool, error) {
|
func MoveFileWithHashCheck(tmpDir types.Path, mediaMetadata *types.MediaMetadata, absBasePath types.Path, logger *log.Entry) (string, bool, error) {
|
||||||
duplicate := false
|
duplicate := false
|
||||||
finalPath, err := GetPathFromMediaMetadata(mediaMetadata.Base64Hash, absBasePath)
|
finalPath, err := GetPathFromBase64Hash(mediaMetadata.Base64Hash, absBasePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
RemoveDir(tmpDir, logger)
|
RemoveDir(tmpDir, logger)
|
||||||
return "", duplicate, fmt.Errorf("failed to get file path from metadata: %q", err)
|
return "", duplicate, fmt.Errorf("failed to get file path from metadata: %q", err)
|
||||||
|
|
|
||||||
|
|
@ -184,7 +184,7 @@ func (r *downloadRequest) respondFromLocalFile(w http.ResponseWriter, absBasePat
|
||||||
"Content-Disposition": r.MediaMetadata.ContentDisposition,
|
"Content-Disposition": r.MediaMetadata.ContentDisposition,
|
||||||
}).Infof("Downloading file")
|
}).Infof("Downloading file")
|
||||||
|
|
||||||
filePath, err := fileutils.GetPathFromMediaMetadata(r.MediaMetadata.Base64Hash, absBasePath)
|
filePath, err := fileutils.GetPathFromBase64Hash(r.MediaMetadata.Base64Hash, absBasePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// FIXME: Remove erroneous file from database?
|
// FIXME: Remove erroneous file from database?
|
||||||
r.Logger.WithError(err).Warn("Failed to get file path from metadata")
|
r.Logger.WithError(err).Warn("Failed to get file path from metadata")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue