1 Star 1 Fork 1

lorock / go-dingtalk-sdk

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
webhook.go 3.26 KB
一键复制 编辑 原始数据 按行查看 历史
lorock 提交于 2020-11-15 22:27 . 初始化仓库
package dingtalkrobot
import (
"context"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"math/rand"
"net/http"
"time"
)
// DingTalk DingTalk
type DingTalk struct {
robotToken []string
}
var keyWord = "."
// InitDingTalk InitDingTalk
func InitDingTalk(tokens []string, key string) *DingTalk {
if len(tokens) == 0 {
panic("no token")
}
if keyWord != "" {
keyWord = key
}
return &DingTalk{
robotToken: tokens,
}
}
// sendMessage sendMessage
func (d *DingTalk) sendMessage(msg iDingMsg) error {
var (
ctx context.Context
cancel context.CancelFunc
url string
resp *http.Response
err error
)
ctx, cancel = context.WithTimeout(context.Background(), time.Second*2)
defer cancel()
url = dingTalkURL + d.robotToken[rand.Intn(len(d.robotToken))]
header := map[string]string{
"Content-type": "application/json",
}
resp, err = doRequest(ctx, "POST", url, header, msg.Marshaler())
if err != nil {
return err
}
if resp.StatusCode != http.StatusOK {
body, _ := ioutil.ReadAll(resp.Body)
return fmt.Errorf("send msg err: %s, token: %s, msg: %s", string(body), d.robotToken, msg.Marshaler())
}
return nil
}
// OutGoing OutGoing
func (d *DingTalk) OutGoing(r io.Reader) (outGoingMsg OutGoingModel, err error) {
buf, err := ioutil.ReadAll(r)
if err != nil {
return
}
err = json.Unmarshal(buf, &outGoingMsg)
return
}
// SendTextMessage SendTextMessage
func (d *DingTalk) SendTextMessage(content string, opt ...AtOption) error {
content = content + keyWord
return d.sendMessage(NewTextMsg(content, opt...))
}
// SendMarkDownMessage SendMarkDownMessage
func (d *DingTalk) SendMarkDownMessage(title, text string, opts ...AtOption) error {
title = title + keyWord
return d.sendMessage(NewMarkDownMsg(title, text, opts...))
}
// SendDTMDMessage 利用dtmd发送点击消息
func (d *DingTalk) SendDTMDMessage(title string, dtmdMap *DingMap, opt ...AtOption) error {
title = title + keyWord
return d.sendMessage(NewDTMDMsg(title, dtmdMap, opt...))
}
// SendMarkDownMessageBySlice SendMarkDownMessageBySlice
func (d DingTalk) SendMarkDownMessageBySlice(title string, textList []string, opts ...AtOption) error {
title = title + keyWord
text := ""
for _, t := range textList {
text = text + "\n" + t
}
return d.sendMessage(NewMarkDownMsg(title, text, opts...))
}
// SendLinkMessage SendLinkMessage
func (d *DingTalk) SendLinkMessage(title, text, picURL, msgURL string) error {
title = title + keyWord
return d.sendMessage(NewLinkMsg(title, text, picURL, msgURL))
}
// SendActionCardMessage SendActionCardMessage
func (d *DingTalk) SendActionCardMessage(title, text string, opts ...ActionCardOption) error {
title = title + keyWord
return d.sendMessage(NewActionCardMsg(title, text, opts...))
}
// SendActionCardMessageBySlice SendActionCardMessageBySlice
func (d *DingTalk) SendActionCardMessageBySlice(title string, textList []string, opts ...ActionCardOption) error {
title = title + keyWord
text := ""
for _, t := range textList {
text = text + "\n" + t
}
return d.sendMessage(NewActionCardMsg(title, text, opts...))
}
// SendFeedCardMessage SendFeedCardMessage
func (d *DingTalk) SendFeedCardMessage(feedCard []FeedCardLinkModel) error {
if len(feedCard) > 0 {
feedCard[0].Title = feedCard[0].Title + keyWord
}
return d.sendMessage(NewFeedCardMsg(feedCard))
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/lorock/go-dingtalk-sdk.git
git@gitee.com:lorock/go-dingtalk-sdk.git
lorock
go-dingtalk-sdk
go-dingtalk-sdk
v1.0.2

搜索帮助

344bd9b3 5694891 D2dac590 5694891