mirror of
https://github.com/alvierahman90/gohookr.git
synced 2024-11-23 07:49:53 +00:00
AppendHeaders
This commit is contained in:
parent
e74c3a684e
commit
c5fef8e42d
@ -4,7 +4,8 @@
|
|||||||
"test": {
|
"test": {
|
||||||
"Script": {
|
"Script": {
|
||||||
"Program": "./example.sh",
|
"Program": "./example.sh",
|
||||||
"AppendPayload": true
|
"AppendPayload": true,
|
||||||
|
"AppendHeaders": true
|
||||||
},
|
},
|
||||||
"DisableSignatureVerification": true,
|
"DisableSignatureVerification": true,
|
||||||
"Tests": [
|
"Tests": [
|
||||||
|
@ -2,22 +2,33 @@ package config
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/http"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Command struct {
|
type Command struct {
|
||||||
Program string
|
Program string
|
||||||
Arguments []string
|
Arguments []string
|
||||||
AppendPayload bool
|
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)
|
arguments := make([]string, 0)
|
||||||
copy(c.Arguments, arguments)
|
copy(c.Arguments, arguments)
|
||||||
|
|
||||||
if c.AppendPayload {
|
if c.AppendPayload {
|
||||||
arguments = append(arguments, payload)
|
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()
|
return exec.Command(c.Program, arguments...).Output()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
date >> test_output
|
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
|
// Run tests and script as goroutine to prevent timing out
|
||||||
go func(){
|
go func() {
|
||||||
// Run tests, immediately stop if one fails
|
// Run tests, immediately stop if one fails
|
||||||
for _, test := range service.Tests {
|
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)
|
fmt.Printf("Test failed(%v) for service %v\n", test, serviceName)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stdout, err := service.Script.Execute(payload)
|
stdout, err := service.Script.Execute(payload, r.Header)
|
||||||
fmt.Println(string(stdout))
|
fmt.Println(string(stdout))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err.Error())
|
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.
|
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 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
|
### Writing Tests
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user