mirror of
https://github.com/cloudflare/redoctober.git
synced 2026-01-07 14:05:47 +00:00
68 lines
1.3 KiB
Go
68 lines
1.3 KiB
Go
package hipchat
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"net/http"
|
|
"net/url"
|
|
"strconv"
|
|
)
|
|
|
|
const (
|
|
RedBackground = "red"
|
|
YellowBackground = "yellow"
|
|
GreenBackground = "green"
|
|
GrayBackground = "gray"
|
|
RandomBackground = "random"
|
|
PurpleBackground = "purple"
|
|
)
|
|
|
|
type HipchatClient struct {
|
|
RoomId int
|
|
ApiKey string
|
|
HcHost string
|
|
RoHost string
|
|
}
|
|
|
|
func NewClient() *HipchatClient {
|
|
return &HipchatClient{}
|
|
}
|
|
func (h *HipchatClient) Notify(msg, color string) error {
|
|
if h.ApiKey == "" {
|
|
return errors.New("ApiKey unset")
|
|
}
|
|
msgBody := map[string]interface{}{
|
|
"message": msg,
|
|
"notify": "true",
|
|
"color": color,
|
|
}
|
|
|
|
body, err := json.Marshal(msgBody)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
roomId := url.QueryEscape(strconv.Itoa(h.RoomId))
|
|
hipchatUrl := fmt.Sprintf("https://%s/v2/room/%s/message?auth_token=%s", h.HcHost, roomId, h.ApiKey)
|
|
req, err := http.NewRequest("POST", hipchatUrl, bytes.NewReader(body))
|
|
|
|
req.Header.Add("Content-Type", "application/json")
|
|
|
|
Client := http.Client{}
|
|
resp, err := Client.Do(req)
|
|
if err != nil {
|
|
log.Printf("Could not post to hipchat for the reason %s", err.Error())
|
|
return err
|
|
}
|
|
|
|
_, err = ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
log.Printf("Could not post to hipchat for the reason %s", err.Error())
|
|
return err
|
|
}
|
|
return nil
|
|
}
|