summaryrefslogtreecommitdiff
path: root/checkmails.go
diff options
context:
space:
mode:
authorKevin Chabowski <kevin@kch42.de>2013-09-14 12:42:30 +0200
committerKevin Chabowski <kevin@kch42.de>2013-09-14 12:42:30 +0200
commit33c32f1e026482d60de635656a53de723114fcb7 (patch)
tree95a828ed57cd32769b2586143342caae15017025 /checkmails.go
parentd81063cc7986234a6b6276560fbd054a538d25cb (diff)
downloadmailremind-33c32f1e026482d60de635656a53de723114fcb7.tar.gz
mailremind-33c32f1e026482d60de635656a53de723114fcb7.tar.bz2
mailremind-33c32f1e026482d60de635656a53de723114fcb7.zip
checkjobs (was checkmails) now recovers from panics
Diffstat (limited to 'checkmails.go')
-rw-r--r--checkmails.go65
1 files changed, 0 insertions, 65 deletions
diff --git a/checkmails.go b/checkmails.go
deleted file mode 100644
index 576c2c2..0000000
--- a/checkmails.go
+++ /dev/null
@@ -1,65 +0,0 @@
-package main
-
-import (
- "bytes"
- "fmt"
- "kch42.de/gostuff/mailremind/model"
- "log"
- "time"
-)
-
-var checkInterval int64
-
-func initCheckmails() {
- var err error
- if checkInterval, err = conf.GetInt("schedules", "checkInterval"); err != nil {
- log.Fatalf("Could not read config schedules.checkInterval: %s", err)
- }
-}
-
-func checkmails() {
- timech := make(chan time.Time)
- go func(ch chan time.Time) {
- ticker := time.NewTicker(time.Duration(checkInterval) * time.Second)
-
- ch <- time.Now()
- for t := range ticker.C {
- ch <- t
- }
- }(timech)
-
- for t := range timech {
- jobs := dbcon.JobsBefore(t)
-
- for _, job := range jobs {
- if sendjob(job, t) {
- next := job.Chronos().NextAfter(t)
- if next.IsZero() {
- if err := job.Delete(); err != nil {
- log.Printf("Failed deleting job %s after job was done: %s", job.ID(), err)
- }
- } else {
- if err := job.SetNext(next); err != nil {
- log.Printf("Filed setting next for job %s: %s", job.ID(), err)
- }
- }
- }
- }
- }
-}
-
-func sendjob(job model.Job, t time.Time) bool {
- user := job.User()
- buf := new(bytes.Buffer)
-
- fmt.Fprintf(buf, "From: %s\n", MailFrom)
- fmt.Fprintf(buf, "To: %s\n", user.Email())
- fmt.Fprintf(buf, "Subject: %s\n", job.Subject())
- fmt.Fprintf(buf, "Date: %s\n", t.In(user.Location()).Format(time.RFC1123Z))
-
- fmt.Fprintln(buf, "")
-
- buf.Write(job.Content())
-
- return Mail(user.Email(), MailFrom, buf.Bytes())
-}