Mercurial > gemma
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 +}