Mercurial > yakumo_izuru > aya
comparison serve.go @ 72:b32ca33188c0 draft
コードを借りる
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author | yakumo.izuru |
---|---|
date | Mon, 23 Oct 2023 22:39:52 +0000 |
parents | |
children | e1f9fda6986a |
comparison
equal
deleted
inserted
replaced
71:7819959ac6ca | 72:b32ca33188c0 |
---|---|
1 // Taken from https://github.com/fogleman/serve and repurposed as a library | |
2 package aya | |
3 | |
4 import ( | |
5 "fmt" | |
6 "log" | |
7 "net/http" | |
8 ) | |
9 | |
10 // ResponseWriter wraps http.ResponseWriter to capture the HTTP status code | |
11 type ResponseWriter struct { | |
12 http.ResponseWriter | |
13 StatusCode int | |
14 } | |
15 | |
16 func (w *ResponseWriter) WriteHeader(statusCode int) { | |
17 w.StatusCode = statusCode | |
18 w.ResponseWriter.WriteHeader(statusCode) | |
19 } | |
20 | |
21 // Handler wraps http.Handler to log served files | |
22 type Handler struct { | |
23 http.Handler | |
24 } | |
25 | |
26 func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { | |
27 rw := &ResponseWriter{w, 0} | |
28 h.Handler.ServeHTTP(rw, r) | |
29 log.Println(r.RemoteAddr, r.Method, rw.StatusCode, r.URL) | |
30 } | |
31 | |
32 func HttpServe(Dir string) { | |
33 handler := &Handler{http.FileServer(http.Dir(Dir))} | |
34 http.Handle("/", handler) | |
35 addr := fmt.Sprintf(":%d", 8000) | |
36 log.Printf("Listening on %s\n", addr) | |
37 log.Fatal(http.ListenAndServe(addr, nil)) | |
38 } |