From fa210a0dd365e12ee7c211a4210214a899cad680 Mon Sep 17 00:00:00 2001 From: Alex <alexellis2@gmail.com> Date: Thu, 27 Jul 2017 08:43:52 +0100 Subject: [PATCH] Move HttpAdapter to own file --- gateway/server.go | 43 +---------------------------------- gateway/types/http_adapter.go | 42 ++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 42 deletions(-) create mode 100644 gateway/types/http_adapter.go diff --git a/gateway/server.go b/gateway/server.go index 32b52f62..4ba3df30 100644 --- a/gateway/server.go +++ b/gateway/server.go @@ -120,58 +120,20 @@ func main() { log.Fatal(s.ListenAndServe()) } -// WriteAdapter adapts a ResponseWriter -type WriteAdapter struct { - Writer http.ResponseWriter - HttpResult *HttpResult -} -type HttpResult struct { - HeaderCode int -} - -//NewWriteAdapter create a new NewWriteAdapter -func NewWriteAdapter(w http.ResponseWriter) WriteAdapter { - return WriteAdapter{Writer: w, HttpResult: &HttpResult{}} -} - -//Header adapts Header -func (w WriteAdapter) Header() http.Header { - return w.Writer.Header() -} - -// Write adapts Write -func (w WriteAdapter) Write(data []byte) (int, error) { - return w.Writer.Write(data) -} - -// WriteHeader adapts WriteHeader -func (w WriteAdapter) WriteHeader(i int) { - w.Writer.WriteHeader(i) - w.HttpResult.HeaderCode = i - fmt.Println("GetHeaderCode before", w.HttpResult.HeaderCode) -} - -// GetHeaderCode result from WriteHeader -func (w *WriteAdapter) GetHeaderCode() int { - return w.HttpResult.HeaderCode -} - func makeHandler(proxy *httputil.ReverseProxy, metrics *metrics.MetricOptions) http.HandlerFunc { - // return func(http.ResponseWriter, *http.Request) { return func(w http.ResponseWriter, r *http.Request) { uri := r.URL.String() log.Printf("Forwarding [%s] to %s", r.Method, r.URL.String()) start := time.Now() - writeAdapter := NewWriteAdapter(w) + writeAdapter := types.NewWriteAdapter(w) proxy.ServeHTTP(writeAdapter, r) seconds := time.Since(start).Seconds() fmt.Printf("[%d] took %f seconds\n", writeAdapter.GetHeaderCode(), seconds) forward := "/function/" - // fmt.Println(uri) if len(uri) > len(forward) && strings.Index(uri, forward) == 0 { fmt.Println("function=", uri[len(forward):]) service := uri[len(forward):] @@ -180,8 +142,5 @@ func makeHandler(proxy *httputil.ReverseProxy, metrics *metrics.MetricOptions) h metrics.GatewayFunctionInvocation.With(prometheus.Labels{"function_name": service, "code": strconv.Itoa(code)}).Inc() } - - // metricsOptions. } - // } } diff --git a/gateway/types/http_adapter.go b/gateway/types/http_adapter.go new file mode 100644 index 00000000..38469c2a --- /dev/null +++ b/gateway/types/http_adapter.go @@ -0,0 +1,42 @@ +package types + +import ( + "fmt" + "net/http" +) + +// WriteAdapter adapts a ResponseWriter +type WriteAdapter struct { + Writer http.ResponseWriter + HttpResult *HttpResult +} +type HttpResult struct { + HeaderCode int +} + +//NewWriteAdapter create a new NewWriteAdapter +func NewWriteAdapter(w http.ResponseWriter) WriteAdapter { + return WriteAdapter{Writer: w, HttpResult: &HttpResult{}} +} + +//Header adapts Header +func (w WriteAdapter) Header() http.Header { + return w.Writer.Header() +} + +// Write adapts Write +func (w WriteAdapter) Write(data []byte) (int, error) { + return w.Writer.Write(data) +} + +// WriteHeader adapts WriteHeader +func (w WriteAdapter) WriteHeader(i int) { + w.Writer.WriteHeader(i) + w.HttpResult.HeaderCode = i + fmt.Println("GetHeaderCode before", w.HttpResult.HeaderCode) +} + +// GetHeaderCode result from WriteHeader +func (w *WriteAdapter) GetHeaderCode() int { + return w.HttpResult.HeaderCode +} -- GitLab