Files
dttmr-api/cmd/api-server/main.go
T
2026-07-03 10:30:33 +02:00

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))
}