diff options
| author | Adnan Maolood <[email protected]> | 2021-03-05 11:34:21 -0500 |
|---|---|---|
| committer | Adnan Maolood <[email protected]> | 2021-03-05 11:35:01 -0500 |
| commit | 107b3a17857956c8029984c8cb638f684b480e5f (patch) | |
| tree | 9129d18770bd7eddefe5d59cf3415a982b036081 /examples | |
| parent | certificate.Store: Clean scope path in Load (diff) | |
| download | archived-go-gemini-107b3a17857956c8029984c8cb638f684b480e5f.tar.xz archived-go-gemini-107b3a17857956c8029984c8cb638f684b480e5f.zip | |
Move LoggingMiddleware out of examples/server.go
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/server.go | 46 |
1 files changed, 1 insertions, 45 deletions
diff --git a/examples/server.go b/examples/server.go index 7fa10ad..f00ad5f 100644 --- a/examples/server.go +++ b/examples/server.go @@ -26,7 +26,7 @@ func main() { mux.Handle("/", gemini.FileServer(os.DirFS("/var/www"))) server := &gemini.Server{ - Handler: LoggingMiddleware(mux), + Handler: gemini.LoggingMiddleware(mux), ReadTimeout: 30 * time.Second, WriteTimeout: 1 * time.Minute, GetCertificate: certificates.Get, @@ -56,47 +56,3 @@ func main() { } } } - -func LoggingMiddleware(h gemini.Handler) gemini.Handler { - return gemini.HandlerFunc(func(ctx context.Context, w gemini.ResponseWriter, r *gemini.Request) { - lw := &logResponseWriter{rw: w} - h.ServeGemini(ctx, lw, r) - host := r.TLS().ServerName - log.Printf("gemini: %s %q %d %d", host, r.URL, lw.Status, lw.Wrote) - }) -} - -type logResponseWriter struct { - Status gemini.Status - Wrote int - rw gemini.ResponseWriter - mediatype string - wroteHeader bool -} - -func (w *logResponseWriter) SetMediaType(mediatype string) { - w.mediatype = mediatype -} - -func (w *logResponseWriter) Write(b []byte) (int, error) { - if !w.wroteHeader { - w.WriteHeader(gemini.StatusSuccess, w.mediatype) - } - n, err := w.rw.Write(b) - w.Wrote += n - return n, err -} - -func (w *logResponseWriter) WriteHeader(status gemini.Status, meta string) { - if w.wroteHeader { - return - } - w.wroteHeader = true - w.Status = status - w.Wrote += len(meta) + 5 - w.rw.WriteHeader(status, meta) -} - -func (w *logResponseWriter) Flush() error { - return nil -} |