-
Notifications
You must be signed in to change notification settings - Fork 0
/
sender.go
61 lines (52 loc) · 1.36 KB
/
sender.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package github_webhook_action
import (
"strings"
"github.com/go-resty/resty/v2"
)
type SenderInterface interface {
SendMessage(msg string)
}
type Sender struct {
}
func NewSender() *Sender {
return &Sender{}
}
func (s *Sender) SendMessage(msg string) {
Zerologger.Info().Msgf("msg:%v", msg)
if !Conf.Action.API.Enable {
Zerologger.Info().Msg("action api is disabled")
return
}
reqBody := struct {
To int `json:"to"`
Message string `json:"msg"`
}{Message: msg}
for _, v := range Conf.Action.Target {
if strings.Contains(msg, v.RepoName) {
reqBody.To = v.TargetID
Zerologger.Info().Int("target ID", v.TargetID).Msg("")
break
}
}
if reqBody.To == 0 {
Zerologger.Error().Msg("can't find repo name in msg")
}
client := resty.New()
req := client.R().SetHeader("Accept", "application/json").SetBody(&reqBody)
if len(Conf.Action.API.Auth) > 0 {
req = req.SetAuthToken(Conf.Action.API.Auth)
}
var resp *resty.Response
var err error
if strings.ToLower(Conf.Action.API.Mothod) == "post" {
resp, err = req.Post(Conf.Action.API.URL)
} else if strings.ToLower(Conf.Action.API.Mothod) == "get" {
resp, err = req.SetQueryParams(map[string]string{
"param1": "apple",
"param2": "lemon"}).Get(Conf.Action.API.URL)
}
if err != nil {
Zerologger.Error().Err(err).Msg("failed to sendMessage")
}
Zerologger.Info().Msgf("resp:%v", resp)
}