export xmpp options
This commit is contained in:
parent
7fc17fed2d
commit
70109f5645
|
@ -33,9 +33,15 @@ func NewHandler(client *xmpp.Client, newHooks []config.Hook) *Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
var payload map[string]interface{}
|
var body map[string]interface{}
|
||||||
libHTTP.Read(r, &payload)
|
libHTTP.Read(r, &body)
|
||||||
username := payload["username"].(string)
|
payload := body["payload"].(map[string]interface{})
|
||||||
|
username, ok := payload["username"].(string)
|
||||||
|
if !ok {
|
||||||
|
log.Log.Error(r.Body)
|
||||||
|
http.Error(w, fmt.Sprintf("no readable payload"), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
reponame := payload["reponame"].(string)
|
reponame := payload["reponame"].(string)
|
||||||
repoFullName := fmt.Sprintf("%s/%s", username, reponame)
|
repoFullName := fmt.Sprintf("%s/%s", username, reponame)
|
||||||
|
|
||||||
|
@ -46,11 +52,12 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
status := payload["status"].(string)
|
status := payload["status"].(string)
|
||||||
buildNum := payload["build_num"].(int)
|
buildNum := payload["build_num"].(float64)
|
||||||
buildURL := payload["build_url"].(string)
|
buildURL := payload["build_url"].(string)
|
||||||
buildTime := payload["build_time_millis"].(int)
|
buildTime := payload["build_time_millis"].(float64)
|
||||||
subject := payload["subject"].(string)
|
subject := payload["subject"].(string)
|
||||||
msg := fmt.Sprintf("[%s/%s] %s (%dms) - #%d: %s \n%s", username, reponame, status, buildTime, buildNum, subject, buildURL)
|
msg := fmt.Sprintf("[%s/%s] %s (%0.fms) - #%0.f: %s \n%s", username, reponame, status, buildTime, buildNum, subject, buildURL)
|
||||||
|
|
||||||
|
log.Log.WithField("type", "circleci").Print(msg)
|
||||||
ownXMPP.Notify(h.client, hook, msg)
|
ownXMPP.Notify(h.client, hook, msg)
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@ import (
|
||||||
|
|
||||||
"github.com/genofire/golang-lib/log"
|
"github.com/genofire/golang-lib/log"
|
||||||
"github.com/mattn/go-xmpp"
|
"github.com/mattn/go-xmpp"
|
||||||
"github.com/pierrre/githubhook"
|
|
||||||
|
|
||||||
"github.com/genofire/hook2xmpp/circleci"
|
"github.com/genofire/hook2xmpp/circleci"
|
||||||
configuration "github.com/genofire/hook2xmpp/config"
|
configuration "github.com/genofire/hook2xmpp/config"
|
||||||
|
@ -24,7 +23,17 @@ func main() {
|
||||||
|
|
||||||
// load config
|
// load config
|
||||||
config := configuration.ReadConfigFile(configFile)
|
config := configuration.ReadConfigFile(configFile)
|
||||||
client, err := xmpp.NewClientNoTLS(config.XMPP.Host, config.XMPP.Username, config.XMPP.Password, config.XMPP.Debug)
|
options := xmpp.Options{
|
||||||
|
Host: config.XMPP.Host,
|
||||||
|
User: config.XMPP.Username,
|
||||||
|
Password: config.XMPP.Password,
|
||||||
|
NoTLS: config.XMPP.NoTLS,
|
||||||
|
Debug: config.XMPP.Debug,
|
||||||
|
Session: config.XMPP.Session,
|
||||||
|
Status: config.XMPP.Status,
|
||||||
|
StatusMessage: config.XMPP.StatusMessage,
|
||||||
|
}
|
||||||
|
client, err := options.NewClient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Log.Panic(err)
|
log.Log.Panic(err)
|
||||||
}
|
}
|
||||||
|
@ -34,14 +43,12 @@ func main() {
|
||||||
client.SendHtml(xmpp.Chat{Remote: config.XMPP.StartupNotify, Type: "chat", Text: "startup of hock2xmpp"})
|
client.SendHtml(xmpp.Chat{Remote: config.XMPP.StartupNotify, Type: "chat", Text: "startup of hock2xmpp"})
|
||||||
go ownXMPP.Start(client)
|
go ownXMPP.Start(client)
|
||||||
|
|
||||||
githubHandler := github.NewHandler(client, config.Hooks)
|
|
||||||
handler := &githubhook.Handler{
|
|
||||||
Delivery: githubHandler.Deliviery,
|
|
||||||
}
|
|
||||||
http.Handle("/github", handler)
|
|
||||||
circleciHandler := circleci.NewHandler(client, config.Hooks)
|
circleciHandler := circleci.NewHandler(client, config.Hooks)
|
||||||
http.Handle("/circleci", circleciHandler)
|
http.Handle("/circleci", circleciHandler)
|
||||||
|
|
||||||
|
githubHandler := github.NewHandler(client, config.Hooks)
|
||||||
|
http.Handle("/github", githubHandler)
|
||||||
|
|
||||||
srv := &http.Server{
|
srv := &http.Server{
|
||||||
Addr: config.WebserverBind,
|
Addr: config.WebserverBind,
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,10 @@ type Config struct {
|
||||||
Username string `toml:"username"`
|
Username string `toml:"username"`
|
||||||
Password string `toml:"password"`
|
Password string `toml:"password"`
|
||||||
Debug bool `toml:"debug"`
|
Debug bool `toml:"debug"`
|
||||||
|
NoTLS bool `toml:"no_tls"`
|
||||||
|
Session bool `toml:"session"`
|
||||||
|
Status string `toml:"status"`
|
||||||
|
StatusMessage string `toml:"status_message"`
|
||||||
StartupNotify string `toml:"startup_notify"`
|
StartupNotify string `toml:"startup_notify"`
|
||||||
} `toml:"xmpp"`
|
} `toml:"xmpp"`
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,14 @@ package github
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
libHTTP "github.com/genofire/golang-lib/http"
|
||||||
"github.com/genofire/golang-lib/log"
|
"github.com/genofire/golang-lib/log"
|
||||||
"github.com/genofire/hook2xmpp/config"
|
|
||||||
xmpp "github.com/mattn/go-xmpp"
|
xmpp "github.com/mattn/go-xmpp"
|
||||||
|
|
||||||
|
"github.com/genofire/hook2xmpp/config"
|
||||||
ownXMPP "github.com/genofire/hook2xmpp/xmpp"
|
ownXMPP "github.com/genofire/hook2xmpp/xmpp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -30,9 +32,16 @@ func NewHandler(client *xmpp.Client, newHooks []config.Hook) *Handler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handler) Deliviery(event string, deliveryID string, payloadOrigin interface{}) {
|
func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
msg := PayloadToString(event, payloadOrigin)
|
var payload map[string]interface{}
|
||||||
payload := payloadOrigin.(map[string]interface{})
|
event := r.Header.Get("X-GitHub-Event")
|
||||||
|
|
||||||
|
if event == "status" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
libHTTP.Read(r, &payload)
|
||||||
|
msg := PayloadToString(event, payload)
|
||||||
repository := payload["repository"].(map[string]interface{})
|
repository := payload["repository"].(map[string]interface{})
|
||||||
repoName := repository["full_name"].(string)
|
repoName := repository["full_name"].(string)
|
||||||
|
|
||||||
|
@ -42,6 +51,7 @@ func (h *Handler) Deliviery(event string, deliveryID string, payloadOrigin inter
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Log.WithField("type", "github").Print(msg)
|
||||||
ownXMPP.Notify(h.client, hook, msg)
|
ownXMPP.Notify(h.client, hook, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue