package main import ( "flag" "fmt" "io" "log" "log/slog" "net/http" "os" "strings" ) var ( bind = flag.String("bind", ":3000", "TCP port to bind to") silent = flag.Bool("silent", false, "if set, don't log http headers") ) func main() { flag.Parse() slog.Info("listening", "url", "http://localhost"+*bind) log.Fatal(http.ListenAndServe(*bind, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.URL.Path == "/.within/health" { fmt.Fprintln(w, "OK") return } contains := strings.Contains(r.Header.Get("Accept"), "text/html") slog.Info("got request", "method", r.Method, "path", r.RequestURI) if contains { w.Header().Add("Content-Type", "text/html") fmt.Fprint(w, "
")
}
var out io.Writer
switch *silent {
case true:
out = w
case false:
out = io.MultiWriter(w, os.Stdout)
}
fmt.Fprintln(out, r.Method, r.RequestURI)
r.Header.Write(out)
if contains {
fmt.Fprintln(w, "")
}
})))
}