82 lines
1.7 KiB
Go
82 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"gopkg.in/yaml.v2"
|
|
"io/ioutil"
|
|
"os"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/email-tester/model"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/email-tester/senders"
|
|
)
|
|
|
|
type event string
|
|
|
|
var toClient event = "toClient"
|
|
var reminder event = "reminder"
|
|
|
|
func main() {
|
|
fmt.Println("Need event type 'toClient' or 'reminder':")
|
|
var eventFlag string
|
|
fmt.Scanln(&eventFlag)
|
|
defer func() {
|
|
fmt.Println("if you want exit write 'exit'")
|
|
var exit string
|
|
fmt.Scanln(&exit)
|
|
if exit == "exit" {
|
|
return
|
|
}
|
|
}()
|
|
config, err := loadConfig("config.yaml")
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
err = config.Validate()
|
|
if err != nil {
|
|
fmt.Println("failed validate config:", err)
|
|
return
|
|
}
|
|
switch eventFlag {
|
|
case string(toClient):
|
|
fmt.Println("Processing 'toClient' event")
|
|
err = senders.ToClientTesting(config)
|
|
if err != nil {
|
|
fmt.Println("error process task for toClient test:", err)
|
|
return
|
|
}
|
|
fmt.Println("OK check mailbox")
|
|
case string(reminder):
|
|
fmt.Println("Processing 'reminder' event")
|
|
err = senders.ReminderTesting(config)
|
|
if err != nil {
|
|
fmt.Println("error process task for reminder test:", err)
|
|
return
|
|
}
|
|
fmt.Println("OK check mailbox")
|
|
default:
|
|
fmt.Println("No event type or unknown event type specified need 'toClient' or 'reminder'")
|
|
}
|
|
}
|
|
|
|
func loadConfig(filename string) (model.Config, error) {
|
|
var config model.Config
|
|
|
|
file, err := os.Open(filename)
|
|
if err != nil {
|
|
return config, err
|
|
}
|
|
defer file.Close()
|
|
|
|
data, err := ioutil.ReadAll(file)
|
|
if err != nil {
|
|
return config, err
|
|
}
|
|
|
|
err = yaml.Unmarshal(data, &config)
|
|
if err != nil {
|
|
return config, err
|
|
}
|
|
|
|
return config, nil
|
|
}
|