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; }
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); }
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); } }
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."); }