changeset 1228:17131f0f9fcb

Added endpoint to explicitly delete a temp upload.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 19 Nov 2018 18:32:06 +0100
parents 737e1acea1f1
children d395b2940a82
files pkg/controllers/routes.go pkg/controllers/srimports.go pkg/misc/tmpfiles.go
diffstat 3 files changed, 30 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/controllers/routes.go	Mon Nov 19 18:09:28 2018 +0100
+++ b/pkg/controllers/routes.go	Mon Nov 19 18:32:06 2018 +0100
@@ -160,6 +160,9 @@
 		sysAdmin(http.HandlerFunc(uploadStyle))).Methods(http.MethodPost)
 
 	// Imports
+	api.Handle("/imports/soundingresult-upload/{token}",
+		waterwayAdmin(http.HandlerFunc(deleteSoundingUpload))).Methods(http.MethodDelete)
+
 	api.Handle("/imports/soundingresult-upload", waterwayAdmin(&JSONHandler{
 		Handle: uploadSoundingResult,
 	})).Methods(http.MethodPost)
--- a/pkg/controllers/srimports.go	Mon Nov 19 18:09:28 2018 +0100
+++ b/pkg/controllers/srimports.go	Mon Nov 19 18:32:06 2018 +0100
@@ -34,6 +34,7 @@
 	"gemma.intevation.de/gemma/pkg/imports"
 	"gemma.intevation.de/gemma/pkg/misc"
 	"gemma.intevation.de/gemma/pkg/models"
+	"github.com/gorilla/mux"
 )
 
 const (
@@ -193,7 +194,7 @@
 
 	// If there are no XYZ data we cant help the user anyway.
 	if noXYZ {
-		code = status.StatusBadRequest
+		code = http.StatusBadRequest
 		if err2 := os.RemoveAll(dir); err2 != nil {
 			log.Printf("error: %v\n", err2)
 		}
@@ -212,3 +213,21 @@
 	}
 	return
 }
+
+func deleteSoundingUpload(rw http.ResponseWriter, req *http.Request) {
+	token := mux.Vars(req)["token"]
+	if _, err := hex.DecodeString(token); err != nil {
+		http.Error(rw, "Invalid token", http.StatusBadRequest)
+		return
+	}
+	if err := misc.DeleteTempFile(token); err != nil {
+		http.Error(rw, fmt.Sprintf("error: %v", err), http.StatusInternalServerError)
+		return
+	}
+	result := struct {
+		Message string `json:"message"`
+	}{
+		Message: fmt.Sprintf("Token %s deletes.", token),
+	}
+	SendJSON(rw, http.StatusOK, &result)
+}
--- a/pkg/misc/tmpfiles.go	Mon Nov 19 18:09:28 2018 +0100
+++ b/pkg/misc/tmpfiles.go	Mon Nov 19 18:32:06 2018 +0100
@@ -110,6 +110,13 @@
 	return nil
 }
 
+func DeleteTempFile(token string) error {
+	tmpfilesMu.Lock()
+	defer tmpfilesMu.Unlock()
+	tmp := tmpfilesDir()
+	return os.RemoveAll(filepath.Join(tmp, token))
+}
+
 func UnmakeTempFile(token, path string) error {
 	tmpfilesMu.Lock()
 	defer tmpfilesMu.Unlock()