mirror of
https://github.com/golang/go
synced 2024-11-18 18:54:42 -07:00
godoc: use httptest.ResponseRecorder instead of reimplementing it
R=golang-dev, adg CC=golang-dev https://golang.org/cl/11428043
This commit is contained in:
parent
ca3319fbd2
commit
cd835f01af
@ -40,6 +40,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/http/httptest"
|
||||||
_ "net/http/pprof" // to serve /debug/pprof/*
|
_ "net/http/pprof" // to serve /debug/pprof/*
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
@ -236,22 +237,22 @@ func main() {
|
|||||||
|
|
||||||
// Invoke default HTTP handler to serve request
|
// Invoke default HTTP handler to serve request
|
||||||
// to our buffering httpWriter.
|
// to our buffering httpWriter.
|
||||||
w := &httpWriter{h: http.Header{}, code: 200}
|
w := httptest.NewRecorder()
|
||||||
http.DefaultServeMux.ServeHTTP(w, req)
|
http.DefaultServeMux.ServeHTTP(w, req)
|
||||||
|
|
||||||
// Return data, error, or follow redirect.
|
// Return data, error, or follow redirect.
|
||||||
switch w.code {
|
switch w.Code {
|
||||||
case 200: // ok
|
case 200: // ok
|
||||||
os.Stdout.Write(w.Bytes())
|
os.Stdout.Write(w.Body.Bytes())
|
||||||
return
|
return
|
||||||
case 301, 302, 303, 307: // redirect
|
case 301, 302, 303, 307: // redirect
|
||||||
redirect := w.h.Get("Location")
|
redirect := w.HeaderMap.Get("Location")
|
||||||
if redirect == "" {
|
if redirect == "" {
|
||||||
log.Fatalf("HTTP %d without Location header", w.code)
|
log.Fatalf("HTTP %d without Location header", w.Code)
|
||||||
}
|
}
|
||||||
urlstr = redirect
|
urlstr = redirect
|
||||||
default:
|
default:
|
||||||
log.Fatalf("HTTP error %d", w.code)
|
log.Fatalf("HTTP error %d", w.Code)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.Fatalf("too many redirects")
|
log.Fatalf("too many redirects")
|
||||||
@ -453,13 +454,3 @@ func main() {
|
|||||||
log.Printf("packageText.Execute: %s", err)
|
log.Printf("packageText.Execute: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// An httpWriter is an http.ResponseWriter writing to a bytes.Buffer.
|
|
||||||
type httpWriter struct {
|
|
||||||
bytes.Buffer
|
|
||||||
h http.Header
|
|
||||||
code int
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *httpWriter) Header() http.Header { return w.h }
|
|
||||||
func (w *httpWriter) WriteHeader(code int) { w.code = code }
|
|
||||||
|
Loading…
Reference in New Issue
Block a user