Source code for Aeros.patches.hypercorn.Config
from hypercorn.config import Config as OriginalConfig
from hypercorn.config import format_date_time, List, Tuple, time, Dict
[docs]class Config(OriginalConfig):
def __init__(self, custom_headers: Dict[str, str] = None, *args, **kwargs):
super().__init__(*args, **kwargs)
self.__custom_headers = custom_headers if custom_headers else {}
[docs] def response_headers(self, protocol: str) -> List[Tuple[bytes, bytes]]:
""" This function is patched to include custom headers, which will
be sent in every response. For example to send a custom "server"
header or CORS headers all the time. """
headers = [(b"date", format_date_time(time()).encode("ascii"))]
if self.include_server_header:
headers.append((b"server", f"hypercorn-{protocol}".encode("ascii")))
for alt_svc_header in self.alt_svc_headers:
headers.append((b"alt-svc", alt_svc_header.encode()))
if len(self.alt_svc_headers) == 0 and self._quic_bind:
from aioquic.h3.connection import H3_ALPN
for version in H3_ALPN:
for bind in self._quic_bind:
port = int(bind.split(":")[-1])
headers.append((b"alt-svc", b'%s=":%d"; ma=3600' % (version.encode(), port)))
for header, value in self.__custom_headers.items():
headers.append((header.encode("ascii"), value.encode("ascii")))
return headers