summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/admin/filesystem.go28
-rw-r--r--system/admin/handlers.go22
2 files changed, 31 insertions, 19 deletions
diff --git a/system/admin/filesystem.go b/system/admin/filesystem.go
index 77c721e..21e9740 100644
--- a/system/admin/filesystem.go
+++ b/system/admin/filesystem.go
@@ -1,10 +1,38 @@
package admin
import (
+ "encoding/json"
"net/http"
"os"
+ "strings"
+
+ "github.com/ponzu-cms/ponzu/system/db"
+ "github.com/ponzu-cms/ponzu/system/item"
)
+func deleteUploadFromDisk(target string) error {
+ // get data on file
+ data, err := db.Upload(target)
+ if err != nil {
+ return err
+ }
+
+ // unmarshal data
+ upload := item.FileUpload{}
+ if err = json.Unmarshal(data, &upload); err != nil {
+ return err
+ }
+
+ // use path to delete the physical file from disk
+ delPath := strings.Replace(upload.Path, "/api/", "./", 1)
+ err = os.Remove(delPath)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
func restrict(dir http.Dir) justFilesFilesystem {
return justFilesFilesystem{dir}
}
diff --git a/system/admin/handlers.go b/system/admin/handlers.go
index c47755f..40477fa 100644
--- a/system/admin/handlers.go
+++ b/system/admin/handlers.go
@@ -8,7 +8,6 @@ import (
"fmt"
"log"
"net/http"
- "os"
"strconv"
"strings"
"time"
@@ -2201,24 +2200,9 @@ func deleteUploadHandler(res http.ResponseWriter, req *http.Request) {
return
}
- // get upload data
- upload := item.FileUpload{}
- data, err := db.Upload(t + ":" + id)
- if err != nil {
- log.Println(err)
- res.WriteHeader(http.StatusInternalServerError)
- return
- }
-
- if err = json.Unmarshal(data, &upload); err != nil {
- log.Println(err)
- res.WriteHeader(http.StatusInternalServerError)
- return
- }
-
- // use path to delete the physical file from disk
- delPath := strings.Replace(upload.Path, "/api/", "./", 1)
- err = os.Remove(delPath)
+ // delete from file system, if good, we continue to delete
+ // from database, if bad error 500
+ err = deleteUploadFromDisk(t + ":" + id)
if err != nil {
log.Println(err)
res.WriteHeader(http.StatusInternalServerError)