77 lines
1014 B
Go
77 lines
1014 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 {
|
|
if task.Name != "" {
|
|
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
|
|
}
|