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  }