annotate serve.go @ 90:82986500ae71 draft default tip

Update repository URLs
author yakumo.izuru
date Thu, 15 May 2025 01:25:32 +0000
parents 01ae2ad18ed1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
88
01ae2ad18ed1 風神「嵐の日」
yakumo.izuru
parents: 83
diff changeset
1 /* The following code has been taken from https://github.com/fogleman/serve and it is used on this project as a library */
01ae2ad18ed1 風神「嵐の日」
yakumo.izuru
parents: 83
diff changeset
2 /* Attribution goes to its original author */
72
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
3 package aya
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
4
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
5 import (
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
6 "fmt"
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
7 "log"
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
8 "net/http"
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
9 )
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
10
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
11 // ResponseWriter wraps http.ResponseWriter to capture the HTTP status code
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
12 type ResponseWriter struct {
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
13 http.ResponseWriter
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
14 StatusCode int
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
15 }
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
16
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
17 func (w *ResponseWriter) WriteHeader(statusCode int) {
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
18 w.StatusCode = statusCode
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
19 w.ResponseWriter.WriteHeader(statusCode)
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
20 }
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
21
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
22 // Handler wraps http.Handler to log served files
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
23 type Handler struct {
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
24 http.Handler
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
25 }
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
26
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
27 func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
28 rw := &ResponseWriter{w, 0}
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
29 h.Handler.ServeHTTP(rw, r)
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
30 log.Println(r.RemoteAddr, r.Method, rw.StatusCode, r.URL)
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
31 }
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
32
77
e1f9fda6986a Just a documentation update
yakumo.izuru
parents: 72
diff changeset
33 // This function is called by the `aya serve` subcommand
e1f9fda6986a Just a documentation update
yakumo.izuru
parents: 72
diff changeset
34 func HttpServe(Dir string, Port int) {
72
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
35 handler := &Handler{http.FileServer(http.Dir(Dir))}
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
36 http.Handle("/", handler)
83
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 77
diff changeset
37 addr := fmt.Sprintf("127.0.0.1:%d", Port)
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 77
diff changeset
38 log.Printf("[aya.HttpServe] Listening on %s\n", addr)
72
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
39 log.Fatal(http.ListenAndServe(addr, nil))
b32ca33188c0 コードを借りる
yakumo.izuru
parents:
diff changeset
40 }