changeset 3751:96d6e6417819

SR import: Allow upload of none-ZIP files and assume they are plain XYZ files.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 25 Jun 2019 10:21:55 +0200
parents f20bd1aee549
children bdc7ff183db0
files pkg/controllers/srimports.go
diffstat 1 files changed, 16 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/controllers/srimports.go	Mon Jun 24 17:43:54 2019 +0200
+++ b/pkg/controllers/srimports.go	Tue Jun 25 10:21:55 2019 +0200
@@ -193,17 +193,19 @@
 		return
 	}
 
+	var messages []string
+
 	srFile := filepath.Join(dir, "sr.zip")
 
 	var zr *zip.ReadCloser
-	if zr, err = zip.OpenReader(srFile); err != nil {
-		return
-	}
 	var once sync.Once
 	closeOnce := func() { zr.Close() }
-	defer once.Do(closeOnce)
 
-	var messages []string
+	if zr, err = zip.OpenReader(srFile); err != nil {
+		messages = append(messages, fmt.Sprintf("Not a ZIP file: %v"))
+	} else {
+		defer once.Do(closeOnce)
+	}
 
 	var result struct {
 		Token    string      `json:"token,omitempty"`
@@ -213,7 +215,11 @@
 
 	find := func(ext string) *zip.File { return common.FindInZIP(zr, ext) }
 
-	noXYZ := find(".xyz") == nil && find(".txt") == nil
+	var noXYZ bool
+	if zr != nil {
+		noXYZ = find(".xyz") == nil && find(".txt") == nil
+	}
+
 	if noXYZ {
 		messages = append(messages, "no .xyz or .txt file found.")
 	}
@@ -233,7 +239,10 @@
 			result.Meta = meta
 		}
 	}
-	once.Do(closeOnce)
+
+	if zr != nil {
+		once.Do(closeOnce)
+	}
 
 	code := http.StatusCreated