mirror of
https://github.com/adnanh/webhook.git
synced 2025-05-12 08: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",
|
||||
"execute-command": "{{ .Hookecho }}",
|
||||
|
|
|
@ -109,6 +109,18 @@
|
|||
name: root.0.event
|
||||
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
|
||||
trigger-rule:
|
||||
match:
|
||||
|
|
29
webhook.go
29
webhook.go
|
@ -262,7 +262,7 @@ func main() {
|
|||
// Clean up input
|
||||
*httpMethods = strings.ToUpper(strings.ReplaceAll(*httpMethods, " ", ""))
|
||||
|
||||
hooksURL := makeURL(hooksURLPrefix)
|
||||
hooksURL := makeRoutePattern(hooksURLPrefix)
|
||||
|
||||
r.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
|
||||
fmt.Fprint(w, "OK")
|
||||
|
@ -278,7 +278,7 @@ func main() {
|
|||
|
||||
// Serve HTTP
|
||||
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))
|
||||
|
||||
return
|
||||
|
@ -293,7 +293,7 @@ func main() {
|
|||
}
|
||||
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))
|
||||
}
|
||||
|
||||
|
@ -763,10 +763,21 @@ func valuesToMap(values map[string][]string) map[string]interface{} {
|
|||
return ret
|
||||
}
|
||||
|
||||
// makeURL builds a hook URL with or without a prefix.
|
||||
func makeURL(prefix *string) string {
|
||||
if prefix == nil || *prefix == "" {
|
||||
return "/{id}"
|
||||
}
|
||||
return "/" + *prefix + "/{id}"
|
||||
// makeRoutePattern builds a pattern matching URL for the mux.
|
||||
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 == "" {
|
||||
return ""
|
||||
}
|
||||
|
||||
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_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,
|
||||
http.StatusOK,
|
||||
|
|
Loading…
Add table
Reference in a new issue