return result
-def build_url(host: str, scheme: Optional[str] = None, port: Optional[int] = None) -> str:
+def build_url(host: str, scheme: Optional[str] = None, port: Optional[int] = None, path: str = '') -> str:
"""
Build a valid URL. IPv6 addresses specified in host will be enclosed in brackets
automatically.
>>> build_url('fce:9af7:a667:7286:4917:b8d3:34df:8373', port=80, scheme='http')
'http://[fce:9af7:a667:7286:4917:b8d3:34df:8373]:80'
+ >>> build_url('example.com', 'https', 443, path='/metrics')
+ 'https://example.com:443/metrics'
+
+
:param scheme: The scheme, e.g. http, https or ftp.
:type scheme: str
:param host: Consisting of either a registered name (including but not limited to
pr = urllib.parse.ParseResult(
scheme=scheme if scheme else '',
netloc=netloc,
- path='',
+ path=path,
params='',
query='',
fragment='')
# about to start serving
if server_addr in ['::', '0.0.0.0']:
server_addr = self.get_mgr_ip()
- self.set_uri(build_url(scheme='http', host=server_addr, port=server_port))
+ self.set_uri(build_url(scheme='http', host=server_addr, port=server_port, path='/'))
cherrypy.config.update({
'server.socket_host': server_addr,
# Publish the URI that others may use to access the service we're
# about to start serving
addr = self.get_mgr_ip() if server_addr == "::" else server_addr
- self.set_uri(build_url(scheme='https', host=addr, port=server_port))
+ self.set_uri(build_url(scheme='https', host=addr, port=server_port, path='/'))
# Create the HTTPS werkzeug server serving pecan app
self.server = make_server(