github.com/GregorioDiStefano/go-file-storage@v0.0.0-20161001105139-5707ab351525/controllers/deleteFile.go (about) 1 package controller 2 3 import ( 4 "net/http" 5 6 "github.com/GregorioDiStefano/go-file-storage/log" 7 "github.com/GregorioDiStefano/go-file-storage/models" 8 "github.com/gin-gonic/gin" 9 ) 10 11 type Delete struct { 12 uploader GenericUploader 13 } 14 15 func NewDeleter(uploader Upload) *Delete { 16 return &Delete{uploader} 17 } 18 19 func (delete Delete) DeleteFile(c *gin.Context) { 20 key := c.Param("key") 21 deleteKey := c.Param("delete_key") 22 fileName := c.Param("filename") 23 24 if models.DB.DoesKeyExist(key) { 25 sf := models.DB.ReadStoredFile(key) 26 27 if sf.Deleted { 28 log.WithFields(log.Fields{"key": key, "delete_key": deleteKey, "fn": fileName}).Infoln("File is already deleted") 29 sendError(c, "File is already deleted.") 30 return 31 } 32 33 if sf.DeleteKey != deleteKey || sf.FileName != fileName { 34 log.WithFields(log.Fields{"key": key, "delete_key": deleteKey, "fn": fileName}).Infoln("Delete key or filename was incorrect") 35 sendError(c, "Delete key or filename was incorrect") 36 return 37 } 38 39 if err := delete.uploader.doActualDelete(deleteKey, key, fileName); err != nil { 40 //log.WithFields(log.Fields{"key" : key, "delete_key": deleteKey, "fn": fileName}).Infoln("Delete key or filename was incorrect") 41 sendError(c, "Failed to delete file") 42 return 43 } 44 45 sf.Deleted = true 46 models.DB.WriteStoredFile(*sf) 47 log.WithFields(log.Fields{"key": key, "delete_key": deleteKey, "fn": fileName}).Infoln("File set to deleted.") 48 c.JSON(http.StatusOK, map[string]string{"msg": "File deleted"}) 49 return 50 } 51 52 log.WithFields(log.Fields{"key": key, "delete_key": deleteKey, "fn": fileName}).Infoln("Failed to delete file.") 53 sendError(c, "Something went wrong deleting the requested file") 54 }