public async Task <TLFile> GetFile(TLAbsInputFileLocation location, int filePartSize, int offset = 0) { var result = await SendRequestAsync <TLFile>(new TLRequestGetFile() { Location = location, Limit = filePartSize, Offset = offset }); return(result); }
public async Task <TLFile> GetFile(TLAbsInputFileLocation location, int filePartSize, int offset = 0, CancellationToken token = default(CancellationToken)) { var result = await SendRequestAsync <TLFile>(new TLRequestGetFile() { Location = location, Limit = filePartSize, Offset = offset }, token).ConfigureAwait(false); return(result); }
public async Task <TLFile> GetFile(TLAbsInputFileLocation location, int filePartSize, int offset = 0) { TLFile result = null; try { result = await SendRequestAsync <TLFile>(new TLRequestGetFile() { location = location, limit = filePartSize, offset = offset }); } catch (FileMigrationException ex) { var exportedAuth = await SendRequestAsync <TLExportedAuthorization>(new TLRequestExportAuthorization() { dc_id = ex.DC }); var authKey = _session.AuthKey; var timeOffset = _session.TimeOffset; var serverAddress = _session.ServerAddress; var serverPort = _session.Port; await ReconnectToDcAsync(ex.DC); var auth = await SendRequestAsync <TLauthorization>(new TLRequestImportAuthorization { bytes = exportedAuth.bytes, id = exportedAuth.id }); result = await GetFile(location, filePartSize); _session.AuthKey = authKey; _session.TimeOffset = timeOffset; _transport = new TcpTransport(serverAddress, serverPort); _session.ServerAddress = serverAddress; _session.Port = serverPort; await ConnectAsync(); } return(result); }