@@ -35,10 +35,15 @@ def __init__(
3535 content : DatastarEvent | Collection [DatastarEvent ] | None = None ,
3636 status : int | None = None ,
3737 headers : Mapping [str , str ] | None = None ,
38- brotli : bool = False ,
38+ compression : bool = False ,
39+ brotli_quality : int | None = None ,
40+ brotli_lgwin : int | None = None ,
3941 ) -> None :
40- self ._brotli = brotli
42+ self ._compression = compression
4143 self ._brotli_compressor = None
44+ self ._brotli_quality = brotli_quality if brotli_quality is not None else 11
45+ self ._brotli_lgwin = brotli_lgwin if brotli_lgwin is not None else 22
46+
4247 if not content :
4348 status = status or 204
4449 elif not isinstance (content , str ):
@@ -60,13 +65,15 @@ async def send(
6065 if not event and end_stream is None :
6166 end_stream = True
6267 data = event .encode ("utf-8" ) if event else b""
63- if self ._brotli :
68+ if self ._compression :
6469 if not BROTLI_AVAILABLE :
6570 raise ImportError ("brotli is not installed" )
66- if self ._brotli_compressor is None and event :
71+ if self ._brotli_compressor is None and data :
6772 self ._brotli_compressor = brotli .Compressor (
68- mode = brotli .MODE_TEXT
69- ) # TODO: compression/window settings
73+ mode = brotli .MODE_TEXT ,
74+ quality = self ._brotli_quality ,
75+ lgwin = self ._brotli_lgwin ,
76+ )
7077 self .headers ["Content-Encoding" ] = "br"
7178 if data :
7279 data = self ._brotli_compressor .process (data )
@@ -81,11 +88,17 @@ async def datastar_respond(
8188 * ,
8289 status : int = 200 ,
8390 headers : Mapping [str , str ] | None = None ,
84- brotli : bool = False ,
91+ compression : bool = False ,
92+ brotli_quality : int | None = None ,
93+ brotli_lgwin : int | None = None ,
8594) -> DatastarResponse :
8695 return await request .respond (
8796 DatastarResponse (
88- status = status , headers = headers , brotli = brotli and _client_accepts_brotli (request )
97+ status = status ,
98+ headers = headers ,
99+ compression = compression and _client_accepts_brotli (request ),
100+ brotli_quality = brotli_quality ,
101+ brotli_lgwin = brotli_lgwin ,
89102 )
90103 )
91104
0 commit comments