Example #1
0
        void MakeNextChunkUploadInStreamTo(bool CreateNew = false)
        {
            if (item.ChunkUploadSize <= 0)
            {
                throw new Exception("Not upload type");
            }
            long pos_end = item.SizeWasTransfer + item.ChunkUploadSize - 1;

            if (pos_end >= item.From.node.Info.Size)
            {
                pos_end = item.From.node.Info.Size - 1;
            }

            switch (item.To.node.GetRoot.NodeType.Type)
            {
            case CloudType.Dropbox:
                if (!CreateNew)
                {
                    ((DropboxRequestAPIv2)clientTo).GetResponse_upload_session_append();                //get data return from server
                }
                item.To.stream = ((DropboxRequestAPIv2)clientTo).upload_session_append(
                    new Dropbox_Request_UploadSessionAppend(item.UploadID, item.SizeWasTransfer),
                    pos_end - item.SizeWasTransfer + 1);
                break;

            case CloudType.GoogleDrive:
                if (!CreateNew)
                {
                    ((DriveAPIHttprequestv2)clientTo).Files.Insert_Resumable_Response();                //get data return from server
                }
                item.To.stream = ((DriveAPIHttprequestv2)clientTo).Files.Insert_Resumable(item.UploadID, item.SizeWasTransfer, pos_end, item.From.node.Info.Size);
                break;

            case CloudType.Mega:
                if (!CreateNew)
                {
                    completionHandle = mega_up.ReadDataTextResponse();    //get data return from server
                    if (completionHandle.StartsWith("-"))
                    {
                        throw new Exception(completionHandle);
                    }
                }
                item.ChunkUploadSize = chunksSizesToUploadMega[indexPosMega];
                Uri uri = new Uri(item.UploadID + "/" + item.SizeWasTransfer.ToString());
                mega_up = new MegaUpload(uri, item.ChunkUploadSize);
                MegaAesCtrStreamCrypter crypt_stream = item.From.stream as MegaAesCtrStreamCrypter;

                item.dataCryptoMega         = crypt_stream.GetSave();//save
                item.dataCryptoMega.fileKey = crypt_stream.FileKey;
                item.dataCryptoMega.iv      = crypt_stream.Iv;

                item.To.stream = mega_up.MakeStreamUpload();
                break;

            default: throw new Exception("Not support.");
            }
            item.SaveSizeTransferSuccess = item.SizeWasTransfer;
            return;
        }
Example #2
0
        public MegaAesCtrStreamTests()
        {
            _originalData = new byte[123];
            new Random().NextBytes(_originalData);

            var encryptedData = new byte[_originalData.Length];

            using var encryptedStream = new MegaAesCtrStreamCrypter(new MemoryStream(_originalData));
            encryptedStream.Read(encryptedData, 0, encryptedData.Length);

            _decryptedStream = new MegaAesCtrStreamDecrypter(
                new MemoryStream(encryptedData),
                encryptedData.Length,
                encryptedStream.FileKey,
                encryptedStream.Iv,
                encryptedStream.MetaMac);
        }
Example #3
0
        public MegaAesCtrStream_Tests()
        {
            this.originalData = new byte[123];
            new Random().NextBytes(this.originalData);

            byte[] encryptedData = new byte[this.originalData.Length];
            using (var encryptedStream = new MegaAesCtrStreamCrypter(new MemoryStream(this.originalData)))
            {
                encryptedStream.Read(encryptedData, 0, encryptedData.Length);

                this.decryptedStream = new MegaAesCtrStreamDecrypter(
                    new MemoryStream(encryptedData),
                    encryptedData.Length,
                    encryptedStream.FileKey,
                    encryptedStream.Iv,
                    encryptedStream.MetaMac);
            }
        }
Example #4
0
        bool CommitUploadMega()
        {
            completionHandle = mega_up.ReadDataTextResponse();
            if (completionHandle.StartsWith("-"))
            {
                throw new Exception(completionHandle);
            }
            MegaAesCtrStreamCrypter encryptedStream = item.From.stream as MegaAesCtrStreamCrypter;
            MegaApiClient           client          = clientTo as MegaApiClient;
            MegaNzNode parent  = new MegaNzNode(item.To.node.Parent.Info.ID);
            INode      newitem = client.CommitUpload(item.From.node.Info.Name, parent, encryptedStream, completionHandle);

            if (newitem != null)
            {
                return(true);
            }
            throw new Exception("Commit Upload Failed.");
        }