Fix for overriding api host (#286)
* fix the way we are handling trigger urls when env var overrides api host. also remove basic auth from trigger url
diff --git a/provider/consumer.py b/provider/consumer.py
index 1b6bf6f..9b48a2d 100644
--- a/provider/consumer.py
+++ b/provider/consumer.py
@@ -213,18 +213,29 @@
return secondsSince(self.lastPoll())
def __triggerURL(self, originalURL):
+ parsed = urlparse(originalURL)
apiHost = os.getenv('API_HOST')
if apiHost is not None:
logging.info('[{}] Environment variable defined for API_HOST. Overriding host value defined for trigger in DB with {}'.format(self.trigger, apiHost))
- parsed = urlparse(originalURL)
- parts = parsed.netloc.split('@')
- auth = parts[0]
- newURL = parsed._replace(netloc='{}@{}'.format(auth, apiHost))
+ newURL = parsed._replace(netloc=apiHost)
return newURL.geturl()
else:
- return originalURL
+ # remove https://user:pass@host from url and replace it with just https://host
+ # we do this because we no longer need the basic auth in the url itself.
+ # we rely upon the HTTPBasicAuth handler or the IAMAuth handler
+ parts = parsed.netloc.split('@')
+
+ if len(parts) == 2:
+ host = parts[1]
+ else:
+ host = parts[0]
+
+ logging.info('[{}] Environment variable undefined for API_HOST. Using value in DB of {}'.format(self.trigger, host))
+ newURL = parsed._replace(netloc=host)
+
+ return newURL.geturl()
def run(self):
try: