1package proxyhandler
2
3import (
4	"net"
5	"net/http"
6	"net/http/httputil"
7	"net/url"
8	"time"
9
10	"code.cloudfoundry.org/lager"
11)
12
13func NewHandler(logger lager.Logger, host string) (http.Handler, error) {
14
15	targetUrl, err := url.Parse(host)
16	if err != nil {
17		return nil, err
18	}
19
20	dialer := &net.Dialer{
21		Timeout:   24 * time.Hour,
22		KeepAlive: 24 * time.Hour,
23	}
24
25	transport := &http.Transport{
26		Proxy:               http.ProxyFromEnvironment,
27		Dial:                dialer.Dial,
28		TLSHandshakeTimeout: 60 * time.Second,
29	}
30
31	handler := httputil.NewSingleHostReverseProxy(targetUrl)
32	handler.FlushInterval = 100 * time.Millisecond
33	handler.Transport = transport
34
35	return handler, nil
36}
37