private void SendDocumentInternal(StorageFile storageFile, TLObject obj) { var message = GetDecryptedMessage(obj); if (message == null) { return; } var media = message.Media as TLDecryptedMessageMediaDocument; if (media == null) { return; } var file = media.File as TLEncryptedFile; if (file == null) { return; } UploadDocumentFileManager.UploadFile(file.Id, obj, storageFile, media.Key, media.IV); }
public void CancelUploading(TLDecryptedMessageMediaBase media) { var mediaPhoto = media as TLDecryptedMessageMediaPhoto; if (mediaPhoto != null && mediaPhoto.File != null) { var file = mediaPhoto.File as TLEncryptedFile; if (file != null && file.Id != null) { UploadFileManager.CancelUploadFile(file.Id); } } var mediaDocument = media as TLDecryptedMessageMediaDocument; if (mediaDocument != null && mediaDocument.File != null) { var file = mediaDocument.File as TLEncryptedFile; if (file != null && file.Id != null) { UploadDocumentFileManager.CancelUploadFile(file.Id); } } var mediaVideo = media as TLDecryptedMessageMediaVideo; if (mediaVideo != null && mediaVideo.File != null) { var file = mediaVideo.File as TLEncryptedFile; if (file != null && file.Id != null) { UploadVideoFileManager.CancelUploadFile(file.Id); } } }
private void SendDocumentInternal(byte[] data, TLObject obj) { var message = GetDecryptedMessage(obj); if (message == null) { return; } var media = message.Media as TLDecryptedMessageMediaDocument; if (media == null) { return; } var file = media.File as TLEncryptedFile; if (file == null) { return; } if (data == null) { var fileName = String.Format("{0}_{1}_{2}.jpg", file.Id, file.DCId, file.AccessHash); using (var store = IsolatedStorageFile.GetUserStoreForApplication()) { using (var fileStream = store.OpenFile(fileName, FileMode.Open, FileAccess.Read)) { data = new byte[fileStream.Length]; fileStream.Read(data, 0, data.Length); } } } var encryptedBytes = Telegram.Api.Helpers.Utils.AesIge(data, media.Key.Data, media.IV.Data, true); UploadDocumentFileManager.UploadFile(file.Id, obj, encryptedBytes); }
private async void UploadPhotoInternal(IList <Telegram.Api.WindowsPhone.Tuple <TLDecryptedMessageBase, TLObject> > messages) { for (var i = 0; i < messages.Count; i++) { var obj = messages[i].Item2; var message = GetDecryptedMessage(obj); if (message == null) { return; } var media = message.Media as TLDecryptedMessageMediaPhoto; if (media == null) { return; } var file = media.File as TLEncryptedFile; if (file == null) { return; } var fileName = String.Format("{0}_{1}_{2}.jpg", file.Id, file.DCId, file.AccessHash); var storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName); if (storageFile == null) { return; } System.Diagnostics.Debug.WriteLine("Upload photo random_id={0} name={1}", messages[i].Item1.RandomId, storageFile.DisplayName); UploadDocumentFileManager.UploadFile(file.Id, obj, storageFile, media.Key, media.IV); } }
private void SendDocumentInternal(TLMessage25 message, object o) #endif { var document = ((TLMessageMediaDocument)message.Media).Document as TLDocument; if (document == null) { return; } byte[] thumbBytes = null; var thumb = document.Thumb as TLPhotoSize; if (thumb != null) { var thumbLocation = thumb.Location as TLFileLocation; if (thumbLocation != null) { var fileName = String.Format("{0}_{1}_{2}.jpg", thumbLocation.VolumeId, thumbLocation.LocalId, thumbLocation.Secret); using (var store = IsolatedStorageFile.GetUserStoreForApplication()) { using (var fileStream = store.OpenFile(fileName, FileMode.Open, FileAccess.Read)) { thumbBytes = new byte[fileStream.Length]; fileStream.Read(thumbBytes, 0, thumbBytes.Length); } } } } var bytes = document.Buffer; var md5Bytes = Telegram.Api.Helpers.Utils.ComputeMD5(bytes ?? new byte[0]); var md5Checksum = BitConverter.ToInt64(md5Bytes, 0); StateService.GetServerFilesAsync( results => { var serverFile = results.FirstOrDefault(result => result.MD5Checksum.Value == md5Checksum); if (serverFile != null) { message.InputMedia = serverFile.Media; ShellViewModel.SendMediaInternal(message, MTProtoService, StateService, CacheService); } else { if (thumbBytes != null) { var thumbFileId = TLLong.Random(); UploadFileManager.UploadFile(thumbFileId, message.Media, thumbBytes); Thread.Sleep(100); //NOTE: без этой строки не работает. Почему??? } var fileId = TLLong.Random(); message.Media.FileId = fileId; message.Media.UploadingProgress = 0.001; #if WP81 if (file == null) { UploadDocumentFileManager.UploadFile(fileId, message, bytes); } else { UploadDocumentFileManager.UploadFile(fileId, message, file); } #else UploadDocumentFileManager.UploadFile(fileId, message, bytes); #endif } }); }