1 package main 2 3 import ( 4 "io" 5 "log" 6 "net/http" 7 "os" 8 9 "vimagination.zapto.org/memio" 10 ) 11 12 type Debug struct { 13 Grabber 14 Prefix string 15 } 16 17 func (d Debug) Grab(r http.Request) string { 18 var body io.ReadCloser 19 if r.Body != nil { 20 m := *r.Body.(*memio.Buffer) 21 body = &m 22 } 23 r.Write(os.Stdout) 24 if body != nil { 25 r.Body = body 26 } 27 str := d.Grabber.Grab(r) 28 log.Printf("%s: %s", d.Prefix, str) 29 return str 30 }