|
|
|
@ -3,6 +3,7 @@ package matterhook
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"bytes"
|
|
|
|
|
"crypto/tls"
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"fmt"
|
|
|
|
|
"github.com/gorilla/schema"
|
|
|
|
@ -39,16 +40,18 @@ type IMessage struct {
|
|
|
|
|
|
|
|
|
|
// Client for Mattermost.
|
|
|
|
|
type Client struct {
|
|
|
|
|
url string
|
|
|
|
|
In chan IMessage
|
|
|
|
|
Out chan OMessage
|
|
|
|
|
url string
|
|
|
|
|
In chan IMessage
|
|
|
|
|
Out chan OMessage
|
|
|
|
|
httpclient *http.Client
|
|
|
|
|
Config
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Config for client.
|
|
|
|
|
type Config struct {
|
|
|
|
|
Port int // Port to listen on.
|
|
|
|
|
Token string // Only allow this token from Mattermost. (Allow everything when empty)
|
|
|
|
|
Port int // Port to listen on.
|
|
|
|
|
Token string // Only allow this token from Mattermost. (Allow everything when empty)
|
|
|
|
|
InsecureSkipVerify bool // disable certificate checking
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// New Mattermost client.
|
|
|
|
@ -57,6 +60,11 @@ func New(url string, config Config) *Client {
|
|
|
|
|
if c.Port == 0 {
|
|
|
|
|
c.Port = 9999
|
|
|
|
|
}
|
|
|
|
|
tr := &http.Transport{
|
|
|
|
|
TLSClientConfig: &tls.Config{InsecureSkipVerify: config.InsecureSkipVerify},
|
|
|
|
|
}
|
|
|
|
|
c.httpclient = &http.Client{Transport: tr}
|
|
|
|
|
|
|
|
|
|
go c.StartServer()
|
|
|
|
|
return c
|
|
|
|
|
}
|
|
|
|
@ -124,7 +132,7 @@ func (c *Client) Send(msg OMessage) error {
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
resp, err := http.Post(c.url, "application/json", bytes.NewReader(buf))
|
|
|
|
|
resp, err := c.httpclient.Post(c.url, "application/json", bytes.NewReader(buf))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|