diff pkg/controllers/misc.go @ 5195:d6710d29516b new-fwa

Started to move code around.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 07 May 2020 15:46:51 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pkg/controllers/misc.go	Thu May 07 15:46:51 2020 +0200
@@ -0,0 +1,65 @@
+// This is Free Software under GNU Affero General Public License v >= 3.0
+// without warranty, see README.md and license for details.
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+// License-Filename: LICENSES/AGPL-3.0.txt
+//
+// Copyright (C) 2019, 2020 by via donau
+//   – Österreichische Wasserstraßen-Gesellschaft mbH
+// Software engineering by Intevation GmbH
+//
+// Author(s):
+//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>
+
+package controllers
+
+import (
+	"fmt"
+	"net/http"
+	"strconv"
+	"time"
+
+	"gemma.intevation.de/gemma/pkg/common"
+)
+
+func parseFormTime(
+	rw http.ResponseWriter,
+	req *http.Request,
+	field string,
+	def time.Time,
+) (time.Time, bool) {
+	f := req.FormValue(field)
+	if f == "" {
+		return def.UTC(), true
+	}
+	v, err := common.ParseTime(f)
+	if err != nil {
+		http.Error(
+			rw, fmt.Sprintf("Invalid format for '%s'.", field),
+			http.StatusBadRequest,
+		)
+		return time.Time{}, false
+	}
+	return v.UTC(), true
+}
+
+func parseFormInt(
+	rw http.ResponseWriter,
+	req *http.Request,
+	field string,
+	def int,
+) (int, bool) {
+	f := req.FormValue(field)
+	if f == "" {
+		return def, true
+	}
+	v, err := strconv.Atoi(f)
+	if err != nil {
+		http.Error(
+			rw, fmt.Sprintf("Invalid format for '%s'.", field),
+			http.StatusBadRequest,
+		)
+		return 0, false
+	}
+	return v, true
+}