func New()

in go/wtl/proxy/proxy.go [82:133]


func New(env environment.Env, m *metadata.Metadata, d diagnostics.Diagnostics, httpPort, httpsPort int) (*Proxy, error) {
	fqdn, err := httphelper.FQDN()
	if err != nil {
		return nil, errors.New(compName, err)
	}

	httpAddress := net.JoinHostPort(fqdn, strconv.Itoa(httpPort))

	httpsAddress := ""
	certs := newCerts(m)
	if certs != nil {
		httpsAddress = net.JoinHostPort(fqdn, strconv.Itoa(httpsPort))
	} else {
		httpsPort = -1
	}

	p := &Proxy{
		Diagnostics:  d,
		Env:          env,
		Metadata:     m,
		HTTPAddress:  httpAddress,
		HTTPSAddress: httpsAddress,
		httpPort:     httpPort,
		httpsPort:    httpsPort,
		certs:        certs,
	}

	mux := http.NewServeMux()

	for route, provider := range handlerProviders {
		h, err := provider(p)
		if err != nil {
			return nil, err
		}
		p.handlers = append(p.handlers, h)
		mux.Handle(route, h)
	}

	p.httpSrv = &http.Server{
		Addr:    ":" + strconv.Itoa(p.httpPort),
		Handler: mux,
	}

	if p.certs != nil {
		p.httpsSrv = &http.Server{
			Addr:    ":" + strconv.Itoa(p.httpsPort),
			Handler: mux,
		}
	}

	return p, nil
}