github.com/fanux/shipyard@v0.0.0-20161009071005-6515ce223235/controller/api/swarm.go (about) 1 package api 2 3 import ( 4 "bytes" 5 "net/http" 6 "net/url" 7 ) 8 9 func (a *Api) swarmRedirect(w http.ResponseWriter, req *http.Request) { 10 var err error 11 req.URL, err = url.ParseRequestURI(a.dUrl) 12 if err != nil { 13 http.Error(w, err.Error(), http.StatusInternalServerError) 14 return 15 } 16 a.fwd.ServeHTTP(w, req) 17 } 18 19 type proxyWriter struct { 20 Body *bytes.Buffer 21 Headers *map[string][]string 22 StatusCode *int 23 } 24 25 func (p proxyWriter) Header() http.Header { 26 return *p.Headers 27 } 28 func (p proxyWriter) Write(data []byte) (int, error) { 29 return p.Body.Write(data) 30 } 31 func (p proxyWriter) WriteHeader(code int) { 32 *p.StatusCode = code 33 }