Files
api-gateway/app/server/target.go
2026-02-05 23:58:47 +01:00

44 lines
814 B
Go

package server
import (
"net/http/httputil"
"net/url"
"git.secnex.io/secnex/api-gateway/config"
"git.secnex.io/secnex/masterlog"
)
type Targets map[string]*Target
type Target struct {
ID string
Name string
URL *url.URL
proxy *httputil.ReverseProxy
}
func NewTargets(cfg *config.Configuration) Targets {
targets := make(Targets)
for _, target := range cfg.Targets {
targets[target.ID] = NewTarget(&target)
}
return targets
}
func NewTarget(target *config.Target) *Target {
url, err := url.Parse(target.URL)
if err != nil {
masterlog.Error("Failed to parse target URL", map[string]interface{}{
"error": err,
"target": target.URL,
})
return nil
}
return &Target{
ID: target.ID,
Name: target.Name,
URL: url,
proxy: httputil.NewSingleHostReverseProxy(url),
}
}