Files
imap2asana/imap2asana.go

75 lines
982 B
Go

package main
import (
"log"
"math/rand"
"os"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
ic, err := NewImapClient(
os.Getenv("IMAP_HOST"),
os.Getenv("IMAP_USERNAME"),
os.Getenv("IMAP_PASSWORD"),
"Asana",
"Archive",
)
if err != nil {
panic(err)
}
defer ic.Close()
ac := NewAsanaClient()
err = Poll(ic, ac)
if err != nil {
log.Printf("%s", err)
}
for {
time.Sleep(time.Duration(rand.Intn(60)) * time.Second)
err := Poll(ic, ac)
if err != nil {
log.Printf("%s", err)
}
}
}
type Task struct {
Name string
HtmlNotes string
Uid uint32
}
func Poll(ic *ImapClient, ac *AsanaClient) error {
tasks, err := ic.Poll()
if err != nil {
return err
}
if len(tasks) < 1 {
return nil
}
for _, task := range tasks {
log.Printf("%s", task.Name)
err = ac.CreateTask(task.Name, task.HtmlNotes)
if err != nil {
return err
}
err = ic.Archive(task)
if err != nil {
return err
}
}
return nil
}