Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }