Files
imap2asana/imap2asana.go

75 lines
957 B
Go
Raw Normal View History

2022-10-30 20:31:51 +00:00
package main
import (
2022-10-30 22:29:36 +00:00
"log"
"math/rand"
2022-10-30 20:31:51 +00:00
"os"
2022-10-30 22:29:36 +00:00
"time"
2022-10-30 20:31:51 +00:00
)
func main() {
2022-10-30 22:29:36 +00:00
rand.Seed(time.Now().UnixNano())
2022-10-30 20:31:51 +00:00
ic, err := NewImapClient(
os.Getenv("IMAP_HOST"),
os.Getenv("IMAP_USERNAME"),
os.Getenv("IMAP_PASSWORD"),
2022-10-30 22:23:45 +00:00
"Asana",
"Archive",
2022-10-30 20:31:51 +00:00
)
if err != nil {
panic(err)
}
defer ic.Close()
2022-10-30 22:52:17 +00:00
ac := NewAsanaClient()
2022-10-30 22:29:36 +00:00
for {
2022-10-30 22:52:17 +00:00
err := Poll(ic, ac)
2022-10-30 22:29:36 +00:00
if err != nil {
log.Printf("%s", err)
}
2022-11-21 15:51:13 +00:00
err = ic.Wait()
if err != nil {
log.Printf("%s", err)
}
2022-10-30 20:31:51 +00:00
}
}
2022-10-30 22:23:45 +00:00
type Task struct {
Name string
HtmlNotes string
Uid uint32
2022-10-30 20:31:51 +00:00
}
2022-10-30 22:29:36 +00:00
2022-10-30 22:52:17 +00:00
func Poll(ic *ImapClient, ac *AsanaClient) error {
2022-10-30 22:29:36 +00:00
tasks, err := ic.Poll()
if err != nil {
return err
}
2022-10-30 22:52:17 +00:00
if len(tasks) < 1 {
return nil
}
2022-10-30 22:29:36 +00:00
for _, task := range tasks {
if task.Name != "" {
log.Printf("%s", task.Name)
2022-10-30 22:52:17 +00:00
err = ac.CreateTask(task.Name, task.HtmlNotes)
if err != nil {
return err
}
2022-10-30 22:52:17 +00:00
}
err = ic.Archive(task)
if err != nil {
return err
}
2022-10-30 22:29:36 +00:00
}
return nil
2022-10-30 22:29:36 +00:00
}