From b1f3d09c4add3ec147333fbe37c2d9b6c42d8ab8 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sun, 23 Oct 2022 06:10:46 +0000 Subject: [PATCH] Working fetch call --- go.mod | 3 +++ slack2asana.go | 72 +++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 65 insertions(+), 10 deletions(-) create mode 100644 go.mod diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..48dc1e0 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/firestuff/slack2asana + +go 1.16 diff --git a/slack2asana.go b/slack2asana.go index 09fc398..2d23042 100644 --- a/slack2asana.go +++ b/slack2asana.go @@ -1,26 +1,78 @@ package main import ( + "encoding/json" + "errors" + "fmt" "net/http" + "os" ) type StarsResponse struct { - Ok bool `json:"ok"` - Items []Item `json:"items"` + Ok bool `json:"ok"` + Error string `json:"error"` + Items []*Item `json:"items"` } type Item struct { - Type string `json:"type"` - Channel string `json:"channel",omitempty` + Type string `json:"type"` + Channel string `json:"channel"` Message *Message `json:"message"` } -type Message Struct { - ClientMessageId string `json:"client_message_id"` - Text string `json:"text"` - User string `json:"user"` - Ts string `json:"ts"` - Permalink string `json:"permalink"` +type Message struct { + ClientMessageId string `json:"client_msg_id"` + Text string `json:"text"` + User string `json:"user"` + Ts string `json:"ts"` + Permalink string `json:"permalink"` } +func main() { + c := &http.Client{} + stars, err := getStars(c) + if err != nil { + panic(err) + } + + for _, item := range stars { + if item.Type != "message" { + continue + } + + fmt.Printf("%#v\n", item.Message) + } +} + +func getStars(c *http.Client) ([]*Item, error) { + req, err := http.NewRequest("GET", "https://slack.com/api/stars.list", nil) + if err != nil { + return nil, err + } + + addAuth(req) + + resp, err := c.Do(req) + if err != nil { + return nil, err + } + + dec := json.NewDecoder(resp.Body) + stars := &StarsResponse{} + + err = dec.Decode(stars) + if err != nil { + return nil, err + } + + if !stars.Ok { + return nil, errors.New(stars.Error) + } + + return stars.Items, nil +} + +func addAuth(req *http.Request) { + req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", os.Getenv("SLACK_TOKEN"))) +}