Last change
on this file since 76 was 73, checked in by Izuru Yakumo, 20 months ago |
コードを借りる
Signed-off-by: Izuru Yakumo <yakumo.izuru@…>
|
File size:
904 bytes
|
Rev | Line | |
---|
[73] | 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 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.