90 lines
1.3 KiB
Go
90 lines
1.3 KiB
Go
package dingding
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
// DingClient
|
|
var (
|
|
//DingClient *DingConfig
|
|
)
|
|
|
|
type DingConfig struct {
|
|
AccessToken string
|
|
Url string
|
|
}
|
|
|
|
type DingMsg struct {
|
|
project string
|
|
AppMode string
|
|
Url string
|
|
Info string
|
|
Err error
|
|
}
|
|
type DingText struct {
|
|
Content string `json:"content"`
|
|
}
|
|
|
|
type DingMsgInfo struct {
|
|
Msgtype string `json:"msgtype"`
|
|
Text DingText `json:"text"`
|
|
}
|
|
var dingClient *DingConfig
|
|
|
|
func LoadAccessToken(accessToken string) {
|
|
dingClient = &DingConfig{
|
|
AccessToken: accessToken,
|
|
Url: "https://oapi.dingtalk.com/robot/send",
|
|
}
|
|
}
|
|
|
|
func (d *DingConfig) SendMsg(text string) {
|
|
|
|
url := d.Url + "?access_token=" + d.AccessToken
|
|
|
|
dingMsgInfo := DingMsgInfo{
|
|
Msgtype: "text",
|
|
Text: DingText{
|
|
Content: text,
|
|
},
|
|
}
|
|
|
|
dingMsgInfoByte, _ := json.Marshal(dingMsgInfo)
|
|
|
|
res, err := http.Post(
|
|
url,
|
|
"application/json",
|
|
strings.NewReader(string(dingMsgInfoByte)))
|
|
if err != nil {
|
|
fmt.Println("发送错误:", url, err, string(dingMsgInfoByte))
|
|
}
|
|
|
|
defer res.Body.Close()
|
|
|
|
return
|
|
}
|
|
|
|
func Send(info string) {
|
|
msg := DingMsg{
|
|
Info: info,
|
|
}
|
|
|
|
SendInfo(msg)
|
|
}
|
|
|
|
func SendInfo(msg DingMsg) {
|
|
|
|
text := "通知:\n" + msg.Info
|
|
|
|
if msg.Err != nil {
|
|
text = text + "错误:" + msg.Err.Error() + "/n"
|
|
}
|
|
|
|
dingClient.SendMsg(text)
|
|
|
|
return
|
|
}
|