diff --git a/telethon/crypto/cdn_decrypter.py b/telethon/crypto/cdn_decrypter.py index f4b0ef3e..0381f62d 100644 --- a/telethon/crypto/cdn_decrypter.py +++ b/telethon/crypto/cdn_decrypter.py @@ -19,7 +19,7 @@ class CdnDecrypter: self.cdn_file_hashes = cdn_file_hashes @staticmethod - def prepare_decrypter(client, cdn_client, cdn_redirect): + async def prepare_decrypter(client, cdn_client, cdn_redirect): """Prepares a CDN decrypter, returning (decrypter, file data). 'client' should be an existing client not connected to a CDN. 'cdn_client' should be an already-connected TelegramBareClient @@ -38,14 +38,14 @@ class CdnDecrypter: cdn_aes, cdn_redirect.cdn_file_hashes ) - cdn_file = cdn_client(GetCdnFileRequest( + cdn_file = await cdn_client(GetCdnFileRequest( file_token=cdn_redirect.file_token, offset=cdn_redirect.cdn_file_hashes[0].offset, limit=cdn_redirect.cdn_file_hashes[0].limit )) if isinstance(cdn_file, CdnFileReuploadNeeded): # We need to use the original client here - client(ReuploadCdnFileRequest( + await client(ReuploadCdnFileRequest( file_token=cdn_redirect.file_token, request_token=cdn_file.request_token )) @@ -59,13 +59,13 @@ class CdnDecrypter: return decrypter, cdn_file - def get_file(self): + async def get_file(self): """Calls GetCdnFileRequest and decrypts its bytes. Also ensures that the file hasn't been tampered. """ if self.cdn_file_hashes: cdn_hash = self.cdn_file_hashes.pop(0) - cdn_file = self.client(GetCdnFileRequest( + cdn_file = await self.client(GetCdnFileRequest( self.file_token, cdn_hash.offset, cdn_hash.limit )) cdn_file.bytes = self.cdn_aes.encrypt(cdn_file.bytes) diff --git a/telethon/telegram_bare_client.py b/telethon/telegram_bare_client.py index 1728d98d..6e23b1fa 100644 --- a/telethon/telegram_bare_client.py +++ b/telethon/telegram_bare_client.py @@ -615,7 +615,7 @@ class TelegramBareClient: try: if cdn_decrypter: - result = cdn_decrypter.get_file() + result = await cdn_decrypter.get_file() else: result = await client(GetFileRequest( input_location, offset, part_size @@ -623,7 +623,7 @@ class TelegramBareClient: if isinstance(result, FileCdnRedirect): cdn_decrypter, result = \ - CdnDecrypter.prepare_decrypter( + await CdnDecrypter.prepare_decrypter( client, await self._get_cdn_client(result), result