mirror of
https://github.com/adnanh/webhook.git
synced 2025-05-31 09:42:28 +00:00
add support for setting global response headers using -header flag
add support for setting response headers for a successfuly triggered hook
This commit is contained in:
parent
f620cb056b
commit
37698e63b6
4 changed files with 72 additions and 11 deletions
15
webhook.go
15
webhook.go
|
@ -21,7 +21,7 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
version = "2.3.7"
|
||||
version = "2.4.0"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -36,6 +36,8 @@ var (
|
|||
cert = flag.String("cert", "cert.pem", "path to the HTTPS certificate pem file")
|
||||
key = flag.String("key", "key.pem", "path to the HTTPS certificate private key pem file")
|
||||
|
||||
responseHeaders hook.ResponseHeaders
|
||||
|
||||
watcher *fsnotify.Watcher
|
||||
signals chan os.Signal
|
||||
|
||||
|
@ -45,6 +47,8 @@ var (
|
|||
func main() {
|
||||
hooks = hook.Hooks{}
|
||||
|
||||
flag.Var(&responseHeaders, "header", "response header to return, specified in format name=value, use multiple times to set multiple headers")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
log.SetPrefix("[webhook] ")
|
||||
|
@ -137,6 +141,10 @@ func main() {
|
|||
}
|
||||
|
||||
func hookHandler(w http.ResponseWriter, r *http.Request) {
|
||||
for _, responseHeader := range responseHeaders {
|
||||
w.Header().Set(responseHeader.Name, responseHeader.Value)
|
||||
}
|
||||
|
||||
id := mux.Vars(r)["id"]
|
||||
|
||||
matchedHooks := hooks.MatchAll(id)
|
||||
|
@ -180,6 +188,7 @@ func hookHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
// handle hook
|
||||
for _, h := range matchedHooks {
|
||||
|
||||
err := h.ParseJSONParameters(&headers, &query, &payload)
|
||||
if err != nil {
|
||||
msg := fmt.Sprintf("error parsing JSON: %s", err)
|
||||
|
@ -207,6 +216,10 @@ func hookHandler(w http.ResponseWriter, r *http.Request) {
|
|||
if ok {
|
||||
log.Printf("%s hook triggered successfully\n", h.ID)
|
||||
|
||||
for _, responseHeader := range h.ResponseHeaders {
|
||||
w.Header().Set(responseHeader.Name, responseHeader.Value)
|
||||
}
|
||||
|
||||
if h.CaptureCommandOutput {
|
||||
response := handleHook(h, &headers, &query, &payload, &body)
|
||||
fmt.Fprintf(w, response)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue