47 lines
1.0 KiB
Go
47 lines
1.0 KiB
Go
package handler
|
|
|
|
import (
|
|
"log/slog"
|
|
"net/http"
|
|
|
|
"github.com/robindittmar/dttmr-api/internal/api/response"
|
|
)
|
|
|
|
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"`
|
|
}
|
|
|
|
func DefaultHandler(w http.ResponseWriter, r *http.Request) {
|
|
ctx := r.Context()
|
|
|
|
resp := apiResponse{
|
|
Method: r.Method,
|
|
Url: r.URL.String(),
|
|
Proto: r.Proto,
|
|
Header: make(map[string]string),
|
|
Host: r.Host,
|
|
RemoteAddr: r.RemoteAddr,
|
|
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 {
|
|
slog.ErrorContext(ctx, "error parsing form", slog.Any("error", err))
|
|
}
|
|
|
|
response.JSON(ctx, w, http.StatusOK, resp)
|
|
}
|