Browse Source

Support brotli if brotli is installed

pull/10109/head
dolfies 3 years ago
parent
commit
56226fbbab
  1. 6
      discord/http.py
  2. 4
      discord/utils.py

6
discord/http.py

@ -102,6 +102,10 @@ async def json_or_text(response: aiohttp.ClientResponse) -> Union[Dict[str, Any]
return text
def _gen_accept_encoding_header():
return 'gzip, deflate, br' if aiohttp.http_parser.HAS_BROTLI else 'gzip, deflate'
class Route:
BASE: ClassVar[str] = 'https://discord.com/api/v9'
@ -149,6 +153,8 @@ class MaybeUnlock:
# For some reason, the Discord voice websocket expects this header to be
# completely lowercase while aiohttp respects spec and does it as case-insensitive
aiohttp.hdrs.WEBSOCKET = 'websocket' # type: ignore
# Support brotli if installed
aiohttp.client_reqrep.ClientRequest.DEFAULT_HEADERS[aiohttp.hdrs.ACCEPT_ENCODING] = _gen_accept_encoding_header()
class _FakeResponse:

4
discord/utils.py

@ -1263,10 +1263,10 @@ async def _get_info(session: ClientSession) -> Tuple[str, str, int]:
async def _get_build_number(session: ClientSession) -> int: # Thank you Discord-S.C.U.M
"""Fetches client build number"""
try:
login_page_request = await session.get('https://discord.com/login', headers={'Accept-Encoding': 'gzip, deflate'}, timeout=7)
login_page_request = await session.get('https://discord.com/login', timeout=7)
login_page = await login_page_request.text()
build_url = 'https://discord.com/assets/' + re.compile(r'assets/+([a-z0-9]+)\.js').findall(login_page)[-2] + '.js'
build_request = await session.get(build_url, headers={'Accept-Encoding': 'gzip, deflate'}, timeout=7)
build_request = await session.get(build_url, timeout=7)
build_file = await build_request.text()
build_index = build_file.find('buildNumber') + 14
return int(build_file[build_index:build_index + 6])

Loading…
Cancel
Save