diff pkg/models/importbase.go @ 2016:25967829cf00 unify_imports

Started to simplify the import models.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 24 Jan 2019 17:14:10 +0100
parents
children 070ac9dd61a1
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pkg/models/importbase.go	Thu Jan 24 17:14:10 2019 +0100
@@ -0,0 +1,69 @@
+// 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) 2018 by via donau
+//   – Österreichische Wasserstraßen-Gesellschaft mbH
+// Software engineering by Intevation GmbH
+//
+// Author(s):
+//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>
+
+package models
+
+import (
+	"encoding/json"
+	"time"
+
+	"github.com/robfig/cron"
+)
+
+type (
+	// CronSpec is a string containing a cron line.
+	CronSpec string
+
+	QueueConfigurationType struct {
+		Trys      *int           `json:"trys,omitempty"`
+		WaitRetry *time.Duration `json:"wait-retry,omitempty"`
+		Cron      *CronSpec      `json:"cron,omitempty"`
+		EMail     bool           `json:"send-email,omitempty"`
+	}
+
+	QueueConfigurationGetter interface {
+		GetQueueConfiguration() *QueueConfigurationType
+	}
+
+	URLType struct {
+		URL      string  `json:"url"`
+		Insecure bool    `json:"insecure,omitempty"`
+		User     *string `json:"user,omitempty"`
+		Password *string `json:"password,omitempty"`
+	}
+
+	URLTypeGetter interface {
+		GetURLType() *URLType
+	}
+)
+
+func (qct *QueueConfigurationType) GetQueueConfiguration() *QueueConfigurationType {
+	return qct
+}
+
+func (ut *URLType) GetURLType() *URLType {
+	return ut
+}
+
+// UnmarshalJSON checks if the incoming string is a valid cron line.
+func (cs *CronSpec) UnmarshalJSON(data []byte) error {
+	var spec string
+	if err := json.Unmarshal(data, &spec); err != nil {
+		return err
+	}
+	if _, err := cron.Parse(spec); err != nil {
+		return err
+	}
+	*cs = CronSpec(spec)
+	return nil
+}