@@ -0,0 +1,31 @@
|
||||
package channel
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"message-pusher/model"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func SendCustomMessage(message *model.Message, user *model.User, channel_ *model.Channel) error {
|
||||
url := channel_.URL
|
||||
if strings.HasPrefix(url, "http:") {
|
||||
return errors.New("自定义通道必须使用 HTTPS 协议")
|
||||
}
|
||||
template := channel_.Other
|
||||
template = strings.Replace(template, "$url", message.URL, -1)
|
||||
template = strings.Replace(template, "$to", message.To, -1)
|
||||
template = strings.Replace(template, "$title", message.Title, -1)
|
||||
template = strings.Replace(template, "$description", message.Description, -1)
|
||||
template = strings.Replace(template, "$content", message.Content, -1)
|
||||
reqBody := []byte(template)
|
||||
resp, err := http.Post(url, "application/json", bytes.NewReader(reqBody))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if resp.StatusCode != 200 {
|
||||
return errors.New(resp.Status)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -35,6 +35,8 @@ func SendMessage(message *model.Message, user *model.User, channel_ *model.Chann
|
||||
return SendGroupMessage(message, user, channel_)
|
||||
case model.TypeLarkApp:
|
||||
return SendLarkAppMessage(message, user, channel_)
|
||||
case model.TypeCustom:
|
||||
return SendCustomMessage(message, user, channel_)
|
||||
default:
|
||||
return errors.New("不支持的消息通道:" + channel_.Type)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user