Mercurial > gemma
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()