Mercurial > yakumo_izuru > aya
view serve.go @ 73:8533d875a2bb draft
The World (XXI)
* Replace all iterations of log.* with fmt.* and os.Exit()
* Use proper Go versioning
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author | yakumo.izuru |
---|---|
date | Tue, 21 Nov 2023 11:44:14 +0000 |
parents | b32ca33188c0 |
children | e1f9fda6986a |
line wrap: on
line source
// Taken from https://github.com/fogleman/serve and repurposed as a library package aya import ( "fmt" "log" "net/http" ) // ResponseWriter wraps http.ResponseWriter to capture the HTTP status code type ResponseWriter struct { http.ResponseWriter StatusCode int } func (w *ResponseWriter) WriteHeader(statusCode int) { w.StatusCode = statusCode w.ResponseWriter.WriteHeader(statusCode) } // Handler wraps http.Handler to log served files type Handler struct { http.Handler } func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { rw := &ResponseWriter{w, 0} h.Handler.ServeHTTP(rw, r) log.Println(r.RemoteAddr, r.Method, rw.StatusCode, r.URL) } func HttpServe(Dir string) { handler := &Handler{http.FileServer(http.Dir(Dir))} http.Handle("/", handler) addr := fmt.Sprintf(":%d", 8000) log.Printf("Listening on %s\n", addr) log.Fatal(http.ListenAndServe(addr, nil)) }