Files
slack2asana/slack2asana.go

76 lines
1.0 KiB
Go
Raw Normal View History

2022-10-20 22:03:07 -07:00
package main
import (
2022-10-28 06:34:18 +00:00
"log"
2022-10-28 15:59:00 +00:00
"math/rand"
2022-10-28 06:34:18 +00:00
"time"
2022-10-20 22:03:07 -07:00
)
2022-10-23 06:10:46 +00:00
func main() {
2022-10-28 15:59:00 +00:00
rand.Seed(time.Now().UnixNano())
2022-10-28 06:30:08 +00:00
ac := NewAsanaClient()
2022-10-27 23:38:49 +00:00
sc := NewSlackClient()
2022-10-20 22:03:07 -07:00
2022-10-28 06:34:18 +00:00
err := Poll(ac, sc)
if err != nil {
log.Printf("%s", err)
}
for {
2022-10-28 15:59:00 +00:00
time.Sleep(time.Duration(rand.Intn(60)) * time.Second)
2022-10-28 06:34:18 +00:00
2022-10-28 16:10:04 +00:00
err = Poll(ac, sc)
if err != nil {
log.Printf("%s", err)
}
2022-10-28 06:34:18 +00:00
}
}
func Poll(ac *AsanaClient, sc *SlackClient) error {
2022-10-27 23:38:49 +00:00
stars, err := sc.GetStars()
2022-10-23 06:10:46 +00:00
if err != nil {
2022-10-28 06:34:18 +00:00
return err
2022-10-23 06:10:46 +00:00
}
for _, item := range stars {
if item.Type != "message" {
continue
}
2022-10-27 23:38:49 +00:00
user, err := sc.GetUser(item.Message.User)
2022-10-23 23:14:24 +00:00
if err != nil {
2022-10-28 06:34:18 +00:00
return err
2022-10-23 23:14:24 +00:00
}
2022-10-27 23:38:49 +00:00
channel, err := sc.GetChannel(item.Channel)
2022-10-23 23:14:24 +00:00
if err != nil {
2022-10-28 06:34:18 +00:00
return err
2022-10-23 23:14:24 +00:00
}
2022-10-27 23:38:49 +00:00
title, err := sc.GetTitle(item, user, channel)
2022-10-23 23:14:24 +00:00
if err != nil {
2022-10-28 06:34:18 +00:00
return err
2022-10-23 23:14:24 +00:00
}
2022-10-28 16:10:04 +00:00
notes, err := sc.GetNotes(item, user, channel)
if err != nil {
return err
}
2022-10-28 06:34:18 +00:00
log.Printf("%s\n", title)
2022-10-27 22:51:06 +00:00
2022-10-28 16:10:04 +00:00
err = ac.CreateTask(title, notes)
2022-10-28 06:30:08 +00:00
if err != nil {
2022-10-28 06:34:18 +00:00
return err
2022-10-28 06:30:08 +00:00
}
2022-10-27 23:38:49 +00:00
err = sc.RemoveStar(item)
2022-10-27 22:51:06 +00:00
if err != nil {
2022-10-28 06:34:18 +00:00
return err
2022-10-27 22:51:06 +00:00
}
2022-10-23 23:14:24 +00:00
}
2022-10-28 06:34:18 +00:00
return nil
2022-10-23 23:14:24 +00:00
}