public async Task <InputMessageFactory> CreateDocumentAsync(StorageFile file, bool asFile) { var generated = await file.ToGeneratedAsync(); var thumbnail = new InputThumbnail(await file.ToGeneratedAsync(ConversionType.DocumentThumbnail), 0, 0); if (!asFile && file.FileType.Equals(".webp", StringComparison.OrdinalIgnoreCase)) { try { //var buffer = await FileIO.ReadBufferAsync(file); //var webp = WebPImage.DecodeFromBuffer(buffer); // This isn't supposed to work. var webp = PlaceholderHelper.GetWebPFrame(file.Path) as Windows.UI.Xaml.Media.Imaging.BitmapImage; var width = webp.PixelWidth; var height = webp.PixelHeight; return(new InputMessageFactory { InputFile = generated, Type = new FileTypeSticker(), Delegate = (inputFile, caption) => new InputMessageSticker(inputFile, null, width, height, string.Empty) }); } catch { // Not really a sticker, go on sending as a file } } else if (!asFile && file.FileType.Equals(".tgs", StringComparison.OrdinalIgnoreCase)) { // TODO } else if (!asFile && file.ContentType.StartsWith("audio/", StringComparison.OrdinalIgnoreCase)) { var props = await file.Properties.GetMusicPropertiesAsync(); var duration = (int)props.Duration.TotalSeconds; var title = props.Title; var performer = string.IsNullOrEmpty(props.AlbumArtist) ? props.Artist : props.AlbumArtist; return(new InputMessageFactory { InputFile = generated, Type = new FileTypeAudio(), Delegate = (inputFile, caption) => new InputMessageAudio(inputFile, thumbnail, duration, title, performer, caption) }); } return(new InputMessageFactory { InputFile = generated, Type = new FileTypeDocument(), Delegate = (inputFile, caption) => new InputMessageDocument(inputFile, thumbnail, true, caption) }); }
public async Task <InputMessageFactory> CreateDocumentAsync(StorageFile file, bool asFile) { var generated = await file.ToGeneratedAsync(); var thumbnail = new InputThumbnail(await file.ToGeneratedAsync(ConversionType.DocumentThumbnail), 0, 0); if (!asFile && file.FileType.Equals(".webp", StringComparison.OrdinalIgnoreCase)) { try { var buffer = await FileIO.ReadBufferAsync(file); var webp = WebPImage.DecodeFromBuffer(buffer); var width = webp.PixelWidth; var height = webp.PixelHeight; return(new InputMessageFactory { InputFile = generated, Type = new FileTypeSticker(), Delegate = (inputFile, caption) => new InputMessageSticker(inputFile, null, width, height) }); } catch { // Not really a sticker, go on sending as a file } } else if (!asFile && file.FileType.Equals(".tgs", StringComparison.OrdinalIgnoreCase)) { // TODO } else if (!asFile && file.ContentType.StartsWith("audio/", StringComparison.OrdinalIgnoreCase)) { var props = await file.Properties.GetMusicPropertiesAsync(); var duration = (int)props.Duration.TotalSeconds; return(new InputMessageFactory { InputFile = generated, Type = new FileTypeAudio(), Delegate = (inputFile, caption) => new InputMessageAudio(inputFile, thumbnail, duration, props.Title, props.AlbumArtist, caption) }); } return(new InputMessageFactory { InputFile = generated, Type = new FileTypeDocument(), Delegate = (inputFile, caption) => new InputMessageDocument(inputFile, thumbnail, true, caption) }); }