Skip to content

Commit

Permalink
refactor: Add command-line option to set response body via flag
Browse files Browse the repository at this point in the history
  • Loading branch information
renuka-fernando committed Jun 27, 2024
1 parent 48cb0d1 commit 7a4a202
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ docker run --rm -p 8080:8080 -e "NAME=Service A" renukafernando/request-info:lat
- set `-cert` argument to set the path to the cert file
- set `-mtls` argument to enable mTLS
- set `-ca` argument to set the path to the CA file
- set `-setResponseBody` argument to set the response body via the flag `-responseBody`
- set `-responseBody` argument to set the response body
- set `-disable-access-logs` argument to disable access logs
- ser `-wait-before-graceful-shutdown-ms` argument to set the time to wait before graceful shutdown in milliseconds
- set `-wait-before-graceful-shutdown-ms` argument to set the time to wait before graceful shutdown in milliseconds

Resource Usage
```yaml
Expand Down
23 changes: 18 additions & 5 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,10 @@ func setResponseHandler(handler func(http.ResponseWriter, *http.Request)) func(h
}
}

func setResponseBodyFromArgsHandler(w http.ResponseWriter, req *http.Request) {
_, _ = fmt.Fprintln(w, responseBody)
}

func healthzHandler(w http.ResponseWriter, req *http.Request) {
if atomic.LoadInt32(&healthy) == 1 {
w.WriteHeader(http.StatusOK)
Expand Down Expand Up @@ -257,6 +261,8 @@ func main() {
flag.StringVar(&clientCA, "ca", "ca.crt", "CA certificate file for client verification")
flag.IntVar(&delayMs, "delayMs", 0, "Time to wait (ms) before responding to request")
flag.IntVar(&statusCode, "status", 200, "HTTP status code to respond")
flag.BoolVar(&setResponseBody, "setResponseBody", false, "Response the body set via -responseBody flag")
flag.StringVar(&responseBody, "responseBody", "", "The response body to return")
flag.BoolVar(&disableAccessLogs, "disable-access-logs", false, "Disable access logs")
flag.IntVar(&waitBeforeGracefulShutdownMs, "wait-before-graceful-shutdown-ms", 0, "Time to wait (ms) before graceful shutdown")
flag.Parse()
Expand All @@ -276,12 +282,17 @@ func main() {
// Create a new HTTP server
server := http.NewServeMux()

// Set up a handler for the desired route
server.HandleFunc("/req-info/response", reqInfoSetPayloadHandler)
server.HandleFunc("/empty", setResponseHandler(empty))
server.HandleFunc("/echo", setResponseHandler(echo))
server.HandleFunc("/healthz", healthzHandler)
server.HandleFunc("/", setResponseHandler(reqInfo))

if setResponseBody {
log.Println("[INFO] Responding the body set via -responseBody flag")
server.HandleFunc("/", setResponseBodyFromArgsHandler)
} else {
server.HandleFunc("/req-info/response", reqInfoSetPayloadHandler)
server.HandleFunc("/empty", setResponseHandler(empty))
server.HandleFunc("/echo", setResponseHandler(echo))
server.HandleFunc("/", setResponseHandler(reqInfo))
}

// Enable CORS middleware
corsHandler := enableCORS(server)
Expand Down Expand Up @@ -373,5 +384,7 @@ var key string
var clientCA string
var delayMs int
var statusCode int
var setResponseBody bool
var responseBody string
var disableAccessLogs bool
var waitBeforeGracefulShutdownMs int

0 comments on commit 7a4a202

Please sign in to comment.