def _parse_outgoing_webhooks(self, bridge_cfg):
"""Parses the `outgoing webhooks` from this bridge's config file
section.
This also sets up the HTTP client session for each webhook."""
if 'outgoing_webhooks' not in bridge_cfg:
# No outgoing webhooks in this bridge.
return
outgoing_webhooks = bridge_cfg['outgoing_webhooks']
for outgoing_webhook in outgoing_webhooks:
if 'url' not in outgoing_webhook:
raise InvalidConfigError("Error in config file: "
"'url' is missing from an "
"outgoing webhook definition.")
# Set up SSL context for certificate pinning.
if 'cafile' in outgoing_webhook:
cafile = os.path.abspath(outgoing_webhook['cafile'])
sslcontext = ssl.create_default_context(cafile=cafile)
conn = aiohttp.TCPConnector(ssl_context=sslcontext)
session = aiohttp.ClientSession(loop=self.main_bridge.loop,
connector=conn)
else:
session = aiohttp.ClientSession(loop=self.main_bridge.loop)
# TODO: Handle ConnectionRefusedError.
outgoing_webhook['session'] = session
self.outgoing_webhooks.append(outgoing_webhook)
评论列表
文章目录