aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorAdnan Maolood <[email protected]>2021-03-05 11:34:21 -0500
committerAdnan Maolood <[email protected]>2021-03-05 11:35:01 -0500
commit107b3a17857956c8029984c8cb638f684b480e5f (patch)
tree9129d18770bd7eddefe5d59cf3415a982b036081 /examples
parentcertificate.Store: Clean scope path in Load (diff)
downloadarchived-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.go46
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
-}