Add support for downloading files in different DCs

This commit is contained in:
Dan 2017-12-27 20:59:37 +01:00
parent 0cfce2c165
commit e242f2a555

View File

@ -817,6 +817,7 @@ class Client:
return r
def get_file(self,
dc_id: int,
id: int = None,
access_hash: int = None,
volume_id: int = None,
@ -827,6 +828,38 @@ class Client:
# TODO: Use proper file name and extension
# TODO: Remove redundant code
if dc_id != self.dc_id:
exported_auth = self.send(
functions.auth.ExportAuthorization(
dc_id=dc_id
)
)
session = Session(
dc_id,
self.test_mode,
Auth(dc_id, self.test_mode).create(),
self.config.api_id
)
session.start()
session.send(
functions.auth.ImportAuthorization(
id=exported_auth.id,
bytes=exported_auth.bytes
)
)
else:
session = Session(
dc_id,
self.test_mode,
self.auth_key,
self.config.api_id
)
session.start()
if volume_id: # Photos are accessed by volume_id, local_id, secret
location = types.InputFileLocation(
volume_id=volume_id,
@ -843,9 +876,6 @@ class Client:
limit = 512 * 1024
offset = 0
session = Session(self.dc_id, self.test_mode, self.auth_key, self.config.api_id)
session.start()
try:
r = session.send(
functions.upload.GetFile(