mirror of
https://github.com/adnanh/webhook.git
synced 2025-05-14 09:34:43 +00:00
Merge pull request #484 from moorereason/iss421-slash-path
Add support for slashes in hook IDs
This commit is contained in:
commit
9dec52c727
4 changed files with 71 additions and 9 deletions
|
@ -184,6 +184,22 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "sendgrid/dir",
|
||||||
|
"execute-command": "{{ .Hookecho }}",
|
||||||
|
"command-working-directory": "/",
|
||||||
|
"response-message": "success",
|
||||||
|
"trigger-rule": {
|
||||||
|
"match": {
|
||||||
|
"type": "value",
|
||||||
|
"parameter": {
|
||||||
|
"source": "payload",
|
||||||
|
"name": "root.0.event"
|
||||||
|
},
|
||||||
|
"value": "it worked!"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "plex",
|
"id": "plex",
|
||||||
"execute-command": "{{ .Hookecho }}",
|
"execute-command": "{{ .Hookecho }}",
|
||||||
|
|
|
@ -109,6 +109,18 @@
|
||||||
name: root.0.event
|
name: root.0.event
|
||||||
value: processed
|
value: processed
|
||||||
|
|
||||||
|
- id: sendgrid/dir
|
||||||
|
execute-command: '{{ .Hookecho }}'
|
||||||
|
command-working-directory: /
|
||||||
|
response-message: success
|
||||||
|
trigger-rule:
|
||||||
|
match:
|
||||||
|
type: value
|
||||||
|
parameter:
|
||||||
|
source: payload
|
||||||
|
name: root.0.event
|
||||||
|
value: it worked!
|
||||||
|
|
||||||
- id: plex
|
- id: plex
|
||||||
trigger-rule:
|
trigger-rule:
|
||||||
match:
|
match:
|
||||||
|
|
25
webhook.go
25
webhook.go
|
@ -262,7 +262,7 @@ func main() {
|
||||||
// Clean up input
|
// Clean up input
|
||||||
*httpMethods = strings.ToUpper(strings.ReplaceAll(*httpMethods, " ", ""))
|
*httpMethods = strings.ToUpper(strings.ReplaceAll(*httpMethods, " ", ""))
|
||||||
|
|
||||||
hooksURL := makeURL(hooksURLPrefix)
|
hooksURL := makeRoutePattern(hooksURLPrefix)
|
||||||
|
|
||||||
r.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
|
r.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
|
||||||
fmt.Fprint(w, "OK")
|
fmt.Fprint(w, "OK")
|
||||||
|
@ -278,7 +278,7 @@ func main() {
|
||||||
|
|
||||||
// Serve HTTP
|
// Serve HTTP
|
||||||
if !*secure {
|
if !*secure {
|
||||||
log.Printf("serving hooks on http://%s%s", addr, hooksURL)
|
log.Printf("serving hooks on http://%s%s", addr, makeHumanPattern(hooksURLPrefix))
|
||||||
log.Print(svr.Serve(ln))
|
log.Print(svr.Serve(ln))
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -293,7 +293,7 @@ func main() {
|
||||||
}
|
}
|
||||||
svr.TLSNextProto = make(map[string]func(*http.Server, *tls.Conn, http.Handler)) // disable http/2
|
svr.TLSNextProto = make(map[string]func(*http.Server, *tls.Conn, http.Handler)) // disable http/2
|
||||||
|
|
||||||
log.Printf("serving hooks on https://%s%s", addr, hooksURL)
|
log.Printf("serving hooks on https://%s%s", addr, makeHumanPattern(hooksURLPrefix))
|
||||||
log.Print(svr.ServeTLS(ln, *cert, *key))
|
log.Print(svr.ServeTLS(ln, *cert, *key))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -763,10 +763,21 @@ func valuesToMap(values map[string][]string) map[string]interface{} {
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
// makeURL builds a hook URL with or without a prefix.
|
// makeRoutePattern builds a pattern matching URL for the mux.
|
||||||
func makeURL(prefix *string) string {
|
func makeRoutePattern(prefix *string) string {
|
||||||
|
return makeBaseURL(prefix) + "/{id:.*}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// makeHumanPattern builds a human-friendly URL for display.
|
||||||
|
func makeHumanPattern(prefix *string) string {
|
||||||
|
return makeBaseURL(prefix) + "/{id}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// makeBaseURL creates the base URL before any mux pattern matching.
|
||||||
|
func makeBaseURL(prefix *string) string {
|
||||||
if prefix == nil || *prefix == "" {
|
if prefix == nil || *prefix == "" {
|
||||||
return "/{id}"
|
return ""
|
||||||
}
|
}
|
||||||
return "/" + *prefix + "/{id}"
|
|
||||||
|
return "/" + *prefix
|
||||||
}
|
}
|
||||||
|
|
|
@ -589,6 +589,29 @@ env: HOOK_head_commit.timestamp=2013-03-12T08:14:29-07:00
|
||||||
"sg_event_id": "sg_event_id",
|
"sg_event_id": "sg_event_id",
|
||||||
"sg_message_id": "sg_message_id"
|
"sg_message_id": "sg_message_id"
|
||||||
}
|
}
|
||||||
|
]`,
|
||||||
|
false,
|
||||||
|
http.StatusOK,
|
||||||
|
`success`,
|
||||||
|
``,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slash-in-hook-id",
|
||||||
|
"sendgrid/dir",
|
||||||
|
nil,
|
||||||
|
"POST",
|
||||||
|
nil,
|
||||||
|
"application/json",
|
||||||
|
`[
|
||||||
|
{
|
||||||
|
"email": "example@test.com",
|
||||||
|
"timestamp": 1513299569,
|
||||||
|
"smtp-id": "<14c5d75ce93.dfd.64b469@ismtpd-555>",
|
||||||
|
"event": "it worked!",
|
||||||
|
"category": "cat facts",
|
||||||
|
"sg_event_id": "sg_event_id",
|
||||||
|
"sg_message_id": "sg_message_id"
|
||||||
|
}
|
||||||
]`,
|
]`,
|
||||||
false,
|
false,
|
||||||
http.StatusOK,
|
http.StatusOK,
|
||||||
|
|
Loading…
Add table
Reference in a new issue