go-mastodon-stats/internal/gomastodonstats/matrix.go

58 lines
1.1 KiB
Go

package gomastodonstats
import (
"bytes"
"encoding/json"
"fmt"
"log"
"net/http"
)
type MatrixWebhook struct {
Body string `json:"body"`
Key string `json:"key"`
}
func sendToMatrix(m []metric) {
if MATRIX_WEBHOOK_URL == "" || len(m) == 0 {
log.Println("Skipping posting to Matrix as missing env vars")
return
}
startOfDay := getStartofDay()
sendMatrixWebhook(fmt.Sprintf("*User counts for %s*", startOfDay.String()), MATRIX_WEBHOOK_CHANNEL)
for _, m := range m {
sendMatrixWebhook(getPrintableString(m, false), MATRIX_WEBHOOK_CHANNEL)
}
}
// sendMatrixWebhook - takes msg, sends to matrix
func sendMatrixWebhook(msgText string, channel string) error {
// log.Println(msgText)
data := MatrixWebhook{
Key: MATRIX_WEBHOOK_API_KEY,
}
data.Body = msgText
b, err := json.Marshal(data)
if err != nil {
return err
}
req, err := http.NewRequest("POST", MATRIX_WEBHOOK_URL+"/"+channel, bytes.NewBuffer(b))
if err != nil {
return err
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Print(err)
return nil
}
defer resp.Body.Close()
return nil
}