mirror of
https://github.com/alvierahman90/gohookr.git
synced 2024-09-08 02:36:13 +00:00
AppendHeaders
This commit is contained in:
parent
e74c3a684e
commit
c5fef8e42d
@ -4,7 +4,8 @@
|
||||
"test": {
|
||||
"Script": {
|
||||
"Program": "./example.sh",
|
||||
"AppendPayload": true
|
||||
"AppendPayload": true,
|
||||
"AppendHeaders": true
|
||||
},
|
||||
"DisableSignatureVerification": true,
|
||||
"Tests": [
|
||||
|
@ -2,22 +2,33 @@ package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os/exec"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Command struct {
|
||||
Program string
|
||||
Arguments []string
|
||||
AppendPayload bool
|
||||
AppendHeaders bool
|
||||
}
|
||||
|
||||
func (c Command) Execute(payload string) ([]byte, error) {
|
||||
func (c Command) Execute(payload string, header http.Header) ([]byte, error) {
|
||||
arguments := make([]string, 0)
|
||||
copy(c.Arguments, arguments)
|
||||
|
||||
if c.AppendPayload {
|
||||
arguments = append(arguments, payload)
|
||||
}
|
||||
|
||||
if c.AppendHeaders {
|
||||
var header_builder strings.Builder;
|
||||
header.Write(&header_builder);
|
||||
|
||||
arguments = append(arguments, header_builder.String())
|
||||
}
|
||||
|
||||
return exec.Command(c.Program, arguments...).Output()
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
#!/usr/bin/bash
|
||||
date >> test_output
|
||||
echo "$1" >> test_output
|
||||
echo "$1" "$2" >> test_output
|
||||
|
6
main.go
6
main.go
@ -84,15 +84,15 @@ func webhookHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
// Run tests and script as goroutine to prevent timing out
|
||||
go func(){
|
||||
go func() {
|
||||
// Run tests, immediately stop if one fails
|
||||
for _, test := range service.Tests {
|
||||
if _, err := test.Execute(payload); err != nil {
|
||||
if _, err := test.Execute(payload, r.Header); err != nil {
|
||||
fmt.Printf("Test failed(%v) for service %v\n", test, serviceName)
|
||||
return
|
||||
}
|
||||
}
|
||||
stdout, err := service.Script.Execute(payload)
|
||||
stdout, err := service.Script.Execute(payload, r.Header)
|
||||
fmt.Println(string(stdout))
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
|
@ -41,7 +41,8 @@ You can disable signature verification for all services by setting environment v
|
||||
|
||||
gohookr doesn't care what the command is as long as the `Program` is executable.
|
||||
You can specify extra arguments with the `Arguments` field.
|
||||
You can ask it to put the payload as the last argument by setting `AppendPayload` to true.
|
||||
You can ask it to put the payload as the last (or second to last if `AppendHeaders` is set) argument by setting `AppendPayload` to true.
|
||||
You can ask it to put the request headers as the last argument by setting `AppendHeaders` to true.
|
||||
|
||||
### Writing Tests
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user