68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
type ApiResponse struct {
|
|
Method string `json:"method"`
|
|
Url string `json:"url"`
|
|
Proto string `json:"proto"`
|
|
Header map[string]string `json:"header"`
|
|
Host string `json:"host"`
|
|
RemoteAddr string `json:"remoteAddr"`
|
|
Form map[string]string `json:"form"`
|
|
}
|
|
|
|
type HealthResponse struct {
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
func main() {
|
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
|
var resp ApiResponse
|
|
|
|
resp.Method = r.Method
|
|
resp.Url = r.URL.String()
|
|
resp.Proto = r.Proto
|
|
resp.Header = make(map[string]string)
|
|
resp.Host = r.Host
|
|
resp.RemoteAddr = r.RemoteAddr
|
|
resp.Form = make(map[string]string)
|
|
|
|
for k, v := range r.Header {
|
|
resp.Header[k] = v[0]
|
|
}
|
|
|
|
if err := r.ParseForm(); err == nil {
|
|
for k, v := range r.Form {
|
|
resp.Form[k] = v[0]
|
|
}
|
|
} else {
|
|
log.Print(err)
|
|
}
|
|
|
|
err := json.NewEncoder(w).Encode(resp)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
})
|
|
|
|
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
|
|
resp := HealthResponse{Status: "ok"}
|
|
|
|
err := json.NewEncoder(w).Encode(resp)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
})
|
|
|
|
fmt.Println("Listening on port 8080")
|
|
log.Fatal(http.ListenAndServe(":8080", nil))
|
|
}
|