You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.3 KiB

package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"math/rand"
"net/http"
"strconv"
"strings"
"time"
"github.com/fatih/color"
)
//MatrixToken stores the token data from matrix
type MatrixToken struct {
AccessToken string `json:"access_token"`
Server string `json:"server"`
UserId string `json:"user_id"`
DeviceId string `json:"device_id"`
}
var matrixToken MatrixToken
var defaultTimeFormat = "15:04:05"
func loginMatrix() {
url := config.Matrix.Server + "/_matrix/client/r0/login"
jsonStr := `{
"type":"m.login.password",
"user":"` + config.Matrix.User + `",
"password":"` + config.Matrix.Password + `"
}`
b := strings.NewReader(jsonStr)
req, _ := http.NewRequest("POST", url, b)
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Println(err)
}
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
json.Unmarshal([]byte(body), &matrixToken)
}
func matrixSendMsg(msg string) {
txnId := strconv.Itoa(rand.Int())
url := config.Matrix.Server + "/_matrix/client/r0/rooms/" + config.Matrix.RoomId + "/send/m.room.message/" + txnId + "?access_token=" + matrixToken.AccessToken
jsonStr := `{
"body":"` + time.Now().Format(defaultTimeFormat) + `: ` + msg + `",
"msgtype":"m.text"
}`
b := strings.NewReader(jsonStr)
req, _ := http.NewRequest("PUT", url, b)
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Println(err)
}
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
fmt.Print("msg sent to Matrix: ")
color.Green(msg)
}
func matrixSendNotice(msg string) {
txnId := strconv.Itoa(rand.Int())
url := config.Matrix.Server + "/_matrix/client/r0/rooms/" + config.Matrix.RoomId + "/send/m.room.message/" + txnId + "?access_token=" + matrixToken.AccessToken
jsonStr := `{
"body":"` + time.Now().Format(defaultTimeFormat) + `: ` + msg + `",
"msgtype":"m.notice"
}`
b := strings.NewReader(jsonStr)
req, _ := http.NewRequest("PUT", url, b)
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Println(err)
}
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
fmt.Print("msg sent to Matrix: ")
color.Green(msg)
}