summaryrefslogtreecommitdiffstats
path: root/api/file.go
diff options
context:
space:
mode:
authorCorey Hulen <corey@hulen.com>2016-03-08 12:10:31 -0800
committerCorey Hulen <corey@hulen.com>2016-03-08 12:10:31 -0800
commita1ec47eb780f6d244d1d3d50e6078f907e8b7fd7 (patch)
tree4c46ed31fff46c4b1adc0b29c3c90157348920d9 /api/file.go
parentcbf84c8beaa0896daaf82ecdb63f236da4d64c0e (diff)
parent5c29d4f64935d0516e9d72d1d8cc734bcf295a87 (diff)
downloadchat-a1ec47eb780f6d244d1d3d50e6078f907e8b7fd7.tar.gz
chat-a1ec47eb780f6d244d1d3d50e6078f907e8b7fd7.tar.bz2
chat-a1ec47eb780f6d244d1d3d50e6078f907e8b7fd7.zip
Merge pull request #2388 from mattermost/plt-1789
PLT-1789 Deleting posts with files now renames the file so that public links t…
Diffstat (limited to 'api/file.go')
-rw-r--r--api/file.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/api/file.go b/api/file.go
index 0011afd5b..9150e4bfe 100644
--- a/api/file.go
+++ b/api/file.go
@@ -547,6 +547,41 @@ func writeFile(f []byte, path string) *model.AppError {
return nil
}
+func moveFile(oldPath, newPath string) *model.AppError {
+ if utils.Cfg.FileSettings.DriverName == model.IMAGE_DRIVER_S3 {
+ fileData := make(chan []byte)
+ getFileAndForget(oldPath, fileData)
+ fileBytes := <-fileData
+
+ if fileBytes == nil {
+ return model.NewLocAppError("moveFile", "api.file.move_file.get_from_s3.app_error", nil, "")
+ }
+
+ var auth aws.Auth
+ auth.AccessKey = utils.Cfg.FileSettings.AmazonS3AccessKeyId
+ auth.SecretKey = utils.Cfg.FileSettings.AmazonS3SecretAccessKey
+
+ s := s3.New(auth, awsRegion())
+ bucket := s.Bucket(utils.Cfg.FileSettings.AmazonS3Bucket)
+
+ if err := bucket.Del(oldPath); err != nil {
+ return model.NewLocAppError("moveFile", "api.file.move_file.delete_from_s3.app_error", nil, err.Error())
+ }
+
+ if err := writeFile(fileBytes, newPath); err != nil {
+ return err
+ }
+ } else if utils.Cfg.FileSettings.DriverName == model.IMAGE_DRIVER_LOCAL {
+ if err := os.Rename(utils.Cfg.FileSettings.Directory+oldPath, utils.Cfg.FileSettings.Directory+newPath); err != nil {
+ return model.NewLocAppError("moveFile", "api.file.move_file.rename.app_error", nil, err.Error())
+ }
+ } else {
+ return model.NewLocAppError("moveFile", "api.file.move_file.configured.app_error", nil, "")
+ }
+
+ return nil
+}
+
func writeFileLocally(f []byte, path string) *model.AppError {
if err := os.MkdirAll(filepath.Dir(path), 0774); err != nil {
return model.NewLocAppError("writeFile", "api.file.write_file_locally.create_dir.app_error", nil, err.Error())