diff --git a/internal/hook/hook.go b/internal/hook/hook.go index c425179..0510095 100644 --- a/internal/hook/hook.go +++ b/internal/hook/hook.go @@ -31,15 +31,16 @@ import ( // Constants used to specify the parameter source const ( - SourceHeader string = "header" - SourceQuery string = "url" - SourceQueryAlias string = "query" - SourcePayload string = "payload" - SourceRequest string = "request" - SourceString string = "string" - SourceEntirePayload string = "entire-payload" - SourceEntireQuery string = "entire-query" - SourceEntireHeaders string = "entire-headers" + SourceHeader string = "header" + SourceQuery string = "url" + SourceQueryAlias string = "query" + SourcePayload string = "payload" + SourceRawRequestBody string = "raw-request-body" + SourceRequest string = "request" + SourceString string = "string" + SourceEntirePayload string = "entire-payload" + SourceEntireQuery string = "entire-query" + SourceEntireHeaders string = "entire-headers" ) const ( @@ -459,6 +460,9 @@ func (ha *Argument) Get(r *Request) (string, error) { case SourceString: return ha.Name, nil + case SourceRawRequestBody: + return string(r.Body), nil + case SourceRequest: if r == nil || r.RawRequest == nil { return "", errors.New("request is nil") diff --git a/test/hooks.json.tmpl b/test/hooks.json.tmpl index d04a9f2..9cfe348 100644 --- a/test/hooks.json.tmpl +++ b/test/hooks.json.tmpl @@ -311,6 +311,17 @@ ], } }, + { + "id": "txt-raw", + "execute-command": "{{ .Hookecho }}", + "command-working-directory": "/", + "include-command-output-in-response": true, + "pass-arguments-to-command": [ + { + "source": "raw-request-body" + } + ] + }, { "id": "sendgrid", "execute-command": "{{ .Hookecho }}", diff --git a/test/hooks.yaml.tmpl b/test/hooks.yaml.tmpl index b2f2de6..b18c191 100644 --- a/test/hooks.yaml.tmpl +++ b/test/hooks.yaml.tmpl @@ -172,6 +172,13 @@ name: "app.messages.message.#text" value: "Hello!!" +- id: txt-raw + execute-command: '{{ .Hookecho }}' + command-working-directory: / + include-command-output-in-response: true + pass-arguments-to-command: + - source: raw-request-body + - id: sendgrid execute-command: '{{ .Hookecho }}' command-working-directory: / diff --git a/webhook_test.go b/webhook_test.go index bd63dd5..a81d36e 100644 --- a/webhook_test.go +++ b/webhook_test.go @@ -882,6 +882,25 @@ env: HOOK_head_commit.timestamp=2013-03-12T08:14:29-07:00 `success`, ``, }, + { + "txt-raw", + "txt-raw", + nil, + "POST", + map[string]string{"Content-Type": "text/plain"}, + "text/plain", + `# FOO + +blah +blah`, + false, + http.StatusOK, + `# FOO + +blah +blah`, + ``, + }, { "payload-json-array", "sendgrid",