diff --git a/src/aioweb_tls/backends.py b/src/aioweb_tls/backends.py index d87e036..24fac08 100644 --- a/src/aioweb_tls/backends.py +++ b/src/aioweb_tls/backends.py @@ -9,6 +9,7 @@ import logging import math import aiohttp +from multidict import CIMultiDict from aioweb import Response log = logging.getLogger(__name__) @@ -77,13 +78,14 @@ def _noble_content(response) -> bytes: return text.encode() -def _flatten_headers(headers) -> dict: +def _flatten_headers(headers) -> CIMultiDict: """flatten a Go-style map[str][]str header dict (multi-valued headers as a list) - into plain str values, joined with ", " per RFC 7230""" - return { - key: ", ".join(value) if isinstance(value, list) else value + into plain str values, joined with ", " per RFC 7230, into a case-insensitive + mapping matching aioweb's aiohttp-backed Response.headers""" + return CIMultiDict( + (key, ", ".join(value) if isinstance(value, list) else value) for key, value in headers.items() - } + ) def _history_entries(history) -> list: @@ -177,7 +179,7 @@ class CurlCffi: content = response.content if response.content is not None else b"" return Response( status_code=response.status_code, - headers=dict(response.headers), + headers=CIMultiDict(response.headers), content=content, url=str(response.url), reason=getattr(response, "reason", None),