Beispiel #1
0
        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 SendVideoInternal(byte[] data, TLObject obj)
        {
            var message = GetDecryptedMessage(obj);

            if (message == null)
            {
                return;
            }

            var mediaVideo = message.Media as TLDecryptedMessageMediaVideo;

            if (mediaVideo == null)
            {
                return;
            }

            var fileLocation = mediaVideo.File as TLEncryptedFile;

            if (fileLocation == null)
            {
                return;
            }

            var fileName = String.Format("{0}_{1}_{2}.mp4",
                                         fileLocation.Id,
                                         fileLocation.DCId,
                                         fileLocation.AccessHash);

            if (data == null)
            {
                using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    using (var file = storage.OpenFile(fileName, FileMode.Open, FileAccess.Read))
                    {
                        data = new byte[file.Length];
                        file.Read(data, 0, data.Length);
                    }
                }
            }

            var encryptedBytes = Telegram.Api.Helpers.Utils.AesIge(data, mediaVideo.Key.Data, mediaVideo.IV.Data, true);

            using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                using (var file = storage.OpenFile("encrypted." + fileName, FileMode.Create, FileAccess.Write))
                {
                    file.Write(encryptedBytes, 0, encryptedBytes.Length);
                }
            }

            UploadVideoFileManager.UploadFile(fileLocation.Id, obj, "encrypted." + fileName);
        }
        private void SendCompressedVideoInternal(TLMessage message, object o)
#endif
        {
            var documentMedia = message.Media as TLMessageMediaDocument45;

            if (documentMedia != null)
            {
                var fileName = documentMedia.IsoFileName;
                if (string.IsNullOrEmpty(fileName))
                {
                    return;
                }

                var video = documentMedia.Document as TLDocument22;
                if (video == null)
                {
                    return;
                }


                byte[] thumbBytes = null;
                var    photoThumb = video.Thumb as TLPhotoSize;
                if (photoThumb != null)
                {
                    var location = photoThumb.Location as TLFileLocation;
                    if (location == null)
                    {
                        return;
                    }

                    var thumbFileName = String.Format("{0}_{1}_{2}.jpg",
                                                      location.VolumeId,
                                                      location.LocalId,
                                                      location.Secret);

                    using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
                    {
                        using (var thumbFile = storage.OpenFile(thumbFileName, FileMode.Open, FileAccess.Read))
                        {
                            thumbBytes = new byte[thumbFile.Length];
                            thumbFile.Read(thumbBytes, 0, thumbBytes.Length);
                        }
                    }
                }

                var fileId = message.Media.FileId ?? TLLong.Random();
                message.Media.FileId            = fileId;
                message.Media.UploadingProgress = 0.001;
                //return;
#if WP81
                if (file != null)
                {
                    UploadVideoFileManager.UploadFile(fileId, message.IsGif(), message, file);
                }
                else if (!string.IsNullOrEmpty(fileName))
                {
                    UploadVideoFileManager.UploadFile(fileId, message, fileName);
                }
                else
                {
                    return;
                }
#else
                UploadVideoFileManager.UploadFile(fileId, message, fileName);
#endif

                if (thumbBytes != null)
                {
                    var fileId2 = TLLong.Random();
                    UploadFileManager.UploadFile(fileId2, message.Media, thumbBytes);
                }

                return;
            }

            var videoMedia = message.Media as TLMessageMediaVideo;
            if (videoMedia != null)
            {
                var fileName = videoMedia.IsoFileName;
                if (string.IsNullOrEmpty(fileName))
                {
                    return;
                }

                var video = videoMedia.Video as TLVideo;
                if (video == null)
                {
                    return;
                }


                byte[] thumbBytes = null;
                var    photoThumb = video.Thumb as TLPhotoSize;
                if (photoThumb != null)
                {
                    var location = photoThumb.Location as TLFileLocation;
                    if (location == null)
                    {
                        return;
                    }

                    var thumbFileName = String.Format("{0}_{1}_{2}.jpg",
                                                      location.VolumeId,
                                                      location.LocalId,
                                                      location.Secret);

                    using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
                    {
                        using (var thumbFile = storage.OpenFile(thumbFileName, FileMode.Open, FileAccess.Read))
                        {
                            thumbBytes = new byte[thumbFile.Length];
                            thumbFile.Read(thumbBytes, 0, thumbBytes.Length);
                        }
                    }
                }

                var fileId = message.Media.FileId ?? TLLong.Random();
                message.Media.FileId            = fileId;
                message.Media.UploadingProgress = 0.001;

#if WP81
                if (file != null)
                {
                    UploadVideoFileManager.UploadFile(fileId, message.IsGif(), message, file);
                }
                else if (!string.IsNullOrEmpty(fileName))
                {
                    UploadVideoFileManager.UploadFile(fileId, message, fileName);
                }
                else
                {
                    return;
                }
#else
                UploadVideoFileManager.UploadFile(fileId, message, fileName);
#endif

                if (thumbBytes != null)
                {
                    var fileId2 = TLLong.Random();
                    UploadFileManager.UploadFile(fileId2, message.Media, thumbBytes);
                }

                return;
            }
        }