Merge branch 'master' of github.com:apid/apid-core into bug67694505
diff --git a/util/.util.go.swp b/util/.util.go.swp new file mode 100644 index 0000000..da82acd --- /dev/null +++ b/util/.util.go.swp Binary files differ
diff --git a/util/util.go b/util/util.go index ad936ff..0ae4108 100644 --- a/util/util.go +++ b/util/util.go
@@ -14,12 +14,26 @@ package util + import ( "github.com/google/uuid" "net/http" + "net/url" "time" + "github.com/apid/apid-core" ) +const ( + configfwdProxyURL = "configfwdProxyURL" + configfwdProxyUser = "configfwdProxyUser" + configfwdProxyPasswd = "configfwdProxyPasswd" + configfwdProxyProtocol = "configfwdProxyProtocol" + configfwdProxyPort = "configfwdProxyPort" +) + +var config apid.ConfigService + + func IsValidUUID(id string) bool { _, err := uuid.Parse(id) return err == nil @@ -29,6 +43,41 @@ return uuid.New().String() } +// Returns the http.Transport with Forward Proxy params set (if Configured). +func Transport() *http.Transport { + var tr http.Transport + var pURL *url.URL + var err error + // Apigee Forward Proxy + fwdPrxy := config.GetString(configfwdProxyURL) + fwdPrxyPro := config.GetString(configfwdProxyProtocol) + fwdPrxyUser := config.GetString(configfwdProxyUser) + fwdPrxyPass := config.GetString(configfwdProxyPasswd) + fwdPrxyPort := config.GetString(configfwdProxyPort) + + if fwdPrxy != "" && fwdPrxyPro != "" && fwdPrxyUser != "" && fwdPrxyPort != "" { + pURL, err = url.Parse(fwdPrxyPro + "//" + fwdPrxyUser + ":" + fwdPrxyPass + "@" + fwdPrxy + ":" + fwdPrxyPort) + if err != nil { + panic("Error parsing proxy URL") + } + } else if fwdPrxy != "" && fwdPrxyPro != "" && fwdPrxyPort != "" { + pURL, err = url.Parse(fwdPrxyPro + "//" + fwdPrxy + ":" + fwdPrxyPort) + if err != nil { + panic("Error parsing proxy URL") + } + } + + if pURL != nil { + tr = http.Transport{ + Proxy: http.ProxyURL(pURL), + } + } else { + tr = http.Transport{ + } + } + return &tr +} + // distributeEvents() receives elements from deliverChan, and send them to subscribers // Sending a `chan interface{}` to addSubscriber adds a new subscriber. // It closes the subscriber channel after sending the element.