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.