mirror of
https://github.com/wiz0u/WTelegramClient.git
synced 2025-12-06 06:52:01 +01:00
added DownloadFileAsync helpers
This commit is contained in:
parent
0b3180917f
commit
be4d1aca6b
|
|
@ -902,6 +902,48 @@ namespace WTelegram
|
||||||
return this.Messages_SendMedia(peer, media, text, Helpers.RandomLong(),
|
return this.Messages_SendMedia(peer, media, text, Helpers.RandomLong(),
|
||||||
reply_to_msg_id: reply_to_msg_id, entities: entities, schedule_date: schedule_date);
|
reply_to_msg_id: reply_to_msg_id, entities: entities, schedule_date: schedule_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>Download given photo from Telegram into the outputStream</summary>
|
||||||
|
/// <param name="outputStream">stream to write to. This method does not close/dispose the stream</param>
|
||||||
|
/// <param name="photoSize">if unspecified, will download the largest version of the photo</param>
|
||||||
|
public async Task<Storage_FileType> DownloadFileAsync(Photo photo, Stream outputStream, PhotoSizeBase photoSize = null)
|
||||||
|
{
|
||||||
|
var fileLocation = photo.ToFileLocation(photoSize ?? photo.LargestPhotoSize);
|
||||||
|
await MigrateDCAsync(photo.dc_id);
|
||||||
|
return await DownloadFileAsync(fileLocation, outputStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Download given photo from Telegram into the outputStream</summary>
|
||||||
|
/// <param name="outputStream">stream to write to. This method does not close/dispose the stream</param>
|
||||||
|
/// <param name="thumbSize">if specified, will download the given thumbnail instead of the full document</param>
|
||||||
|
public async Task<Storage_FileType> DownloadFileAsync(Document document, Stream outputStream, PhotoSizeBase thumbSize = null)
|
||||||
|
{
|
||||||
|
var fileLocation = document.ToFileLocation(thumbSize);
|
||||||
|
await MigrateDCAsync(document.dc_id);
|
||||||
|
return await DownloadFileAsync(fileLocation, outputStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Download given file from Telegram into the outputStream</summary>
|
||||||
|
/// <param name="fileLocation">Telegram file identifier, typically obtained with a .ToFileLocation() call</param>
|
||||||
|
/// <param name="outputStream">stream to write to. This method does not close/dispose the stream</param>
|
||||||
|
public async Task<Storage_FileType> DownloadFileAsync(InputFileLocationBase fileLocation, Stream outputStream)
|
||||||
|
{
|
||||||
|
const int ChunkSize = 128 * 1024;
|
||||||
|
int fileSize = 0;
|
||||||
|
Upload_File fileData;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
var fileBase = await this.Upload_GetFile(fileLocation, fileSize, ChunkSize);
|
||||||
|
fileData = fileBase as Upload_File;
|
||||||
|
if (fileData == null)
|
||||||
|
throw new ApplicationException("Upload_GetFile returned unsupported " + fileBase.GetType().Name);
|
||||||
|
await outputStream.WriteAsync(fileData.bytes, 0, fileData.bytes.Length);
|
||||||
|
fileSize += fileData.bytes.Length;
|
||||||
|
|
||||||
|
} while (fileData.bytes.Length == ChunkSize);
|
||||||
|
await MigrateDCAsync(); // migrate back to main DC
|
||||||
|
return fileData.type;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
/// <summary>Enable the collection of id/access_hash pairs (experimental)</summary>
|
/// <summary>Enable the collection of id/access_hash pairs (experimental)</summary>
|
||||||
|
|
|
||||||
|
|
@ -337,6 +337,7 @@ namespace WTelegram
|
||||||
private void WriteTypeAsEnum(StreamWriter sw, TypeInfo typeInfo)
|
private void WriteTypeAsEnum(StreamWriter sw, TypeInfo typeInfo)
|
||||||
{
|
{
|
||||||
enumTypes.Add(typeInfo.ReturnName);
|
enumTypes.Add(typeInfo.ReturnName);
|
||||||
|
bool lowercase = typeInfo.ReturnName == "Storage_FileType";
|
||||||
sw.WriteLine($"{tabIndent}public enum {typeInfo.ReturnName} : uint");
|
sw.WriteLine($"{tabIndent}public enum {typeInfo.ReturnName} : uint");
|
||||||
sw.WriteLine($"{tabIndent}{{");
|
sw.WriteLine($"{tabIndent}{{");
|
||||||
string prefix = "";
|
string prefix = "";
|
||||||
|
|
@ -348,6 +349,7 @@ namespace WTelegram
|
||||||
{
|
{
|
||||||
string className = CSharpName(ctor.predicate);
|
string className = CSharpName(ctor.predicate);
|
||||||
if (!allTypes.Add(className)) continue;
|
if (!allTypes.Add(className)) continue;
|
||||||
|
if (lowercase) className = className.ToLowerInvariant();
|
||||||
ctorToTypes.Remove(ctor.ID);
|
ctorToTypes.Remove(ctor.ID);
|
||||||
sw.WriteLine($"{tabIndent}\t///<summary>See <a href=\"https://core.telegram.org/constructor/{ctor.predicate}\"/></summary>");
|
sw.WriteLine($"{tabIndent}\t///<summary>See <a href=\"https://core.telegram.org/constructor/{ctor.predicate}\"/></summary>");
|
||||||
sw.WriteLine($"{tabIndent}\t{className[prefixLen..]} = 0x{ctor.ID:X8},");
|
sw.WriteLine($"{tabIndent}\t{className[prefixLen..]} = 0x{ctor.ID:X8},");
|
||||||
|
|
|
||||||
|
|
@ -413,25 +413,25 @@ namespace TL
|
||||||
public enum Storage_FileType : uint
|
public enum Storage_FileType : uint
|
||||||
{
|
{
|
||||||
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileUnknown"/></summary>
|
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileUnknown"/></summary>
|
||||||
Unknown = 0xAA963B05,
|
unknown = 0xAA963B05,
|
||||||
///<summary>See <a href="https://core.telegram.org/constructor/storage.filePartial"/></summary>
|
///<summary>See <a href="https://core.telegram.org/constructor/storage.filePartial"/></summary>
|
||||||
Partial = 0x40BC6F52,
|
partial = 0x40BC6F52,
|
||||||
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileJpeg"/></summary>
|
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileJpeg"/></summary>
|
||||||
Jpeg = 0x007EFE0E,
|
jpeg = 0x007EFE0E,
|
||||||
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileGif"/></summary>
|
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileGif"/></summary>
|
||||||
Gif = 0xCAE1AADF,
|
gif = 0xCAE1AADF,
|
||||||
///<summary>See <a href="https://core.telegram.org/constructor/storage.filePng"/></summary>
|
///<summary>See <a href="https://core.telegram.org/constructor/storage.filePng"/></summary>
|
||||||
Png = 0x0A4F63C0,
|
png = 0x0A4F63C0,
|
||||||
///<summary>See <a href="https://core.telegram.org/constructor/storage.filePdf"/></summary>
|
///<summary>See <a href="https://core.telegram.org/constructor/storage.filePdf"/></summary>
|
||||||
Pdf = 0xAE1E508D,
|
pdf = 0xAE1E508D,
|
||||||
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileMp3"/></summary>
|
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileMp3"/></summary>
|
||||||
Mp3 = 0x528A0677,
|
mp3 = 0x528A0677,
|
||||||
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileMov"/></summary>
|
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileMov"/></summary>
|
||||||
Mov = 0x4B09EBBC,
|
mov = 0x4B09EBBC,
|
||||||
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileMp4"/></summary>
|
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileMp4"/></summary>
|
||||||
Mp4 = 0xB3CEA0E4,
|
mp4 = 0xB3CEA0E4,
|
||||||
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileWebp"/></summary>
|
///<summary>See <a href="https://core.telegram.org/constructor/storage.fileWebp"/></summary>
|
||||||
Webp = 0x1081464C,
|
webp = 0x1081464C,
|
||||||
}
|
}
|
||||||
|
|
||||||
///<summary>See <a href="https://core.telegram.org/type/User"/></summary>
|
///<summary>See <a href="https://core.telegram.org/type/User"/></summary>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue