private void AddUploadHandle(TransferHandle h) { Invoke(() => Transfers.Add(h)); h.PropertyChanged += (source, e) => { if (e.PropertyName == "Status") { if (((TransferHandle)source).Status == TransferHandleStatus.Uploading) { Status = ConnectivityStatus.Uploading; } else { if (Transfers.All(t => t.Status == TransferHandleStatus.Success || t.Status == TransferHandleStatus.Cancelled || t.Status == TransferHandleStatus.Error)) { Status = ConnectivityStatus.Online; } } } }; h.TransferEnded += (s1, e1) => { AppendNode(h.Node); }; }
/// <summary> /// READ /// </summary> internal IFileDataRetriever GetFileRetriever(string path, string expectedId) { var node = AssertExist(path); AssertId(node, expectedId); var attr = node.Node.Type == MegaNodeType.File ? FileAttributes.Normal : FileAttributes.Directory; var size = node.Node.Type == MegaNodeType.File ? (long)node.Node.Size : 0; var ts = (DateTime)node.Node.Timestamp; var fd = new FileData(path, attr, ts, ts, ts, size); Func <Stream> streamFn = null; if (node.Node.Type == MegaNodeType.File) { streamFn = () => { var tempFile = Path.Combine(TempDir, MegaApi.Utility.Util.RandomString(6) + ".sync"); bool error = false; TransferHandle handle = null; api.DownloadFileSync(node.Node, tempFile); return(File.OpenRead(tempFile)); }; } else { streamFn = () => { throw new NotImplementedException(); }; } return(new FileRetriever(streamFn) { FileData = fd, RelativeDirectoryPath = Path.GetDirectoryName(path) }); }
public override void StartTransfer(TransferHandle hndl) { DownloadHandle handle = null; try { handle = (DownloadHandle)hndl; } catch (InvalidCastException) { throw new ArgumentException("Only DownloadHandle is supported"); } byte[] dlKey = new byte[handle.Node.NodeKey.DecryptedKey.Length]; Array.Copy(handle.Node.NodeKey.DecryptedKey, dlKey, dlKey.Length); if (dlKey.Length > 16) { dlKey.XorWith(0, dlKey, 16, 16); } var aesKey = new byte[16]; Array.Copy(dlKey, aesKey, 16); handle.AesAlg = Crypto.CreateAes(aesKey); handle.Nonce = new byte[8]; Array.Copy(dlKey, 16, handle.Nonce, 0, 8); handle.MacCheck = new byte[8]; Array.Copy(dlKey, 24, handle.MacCheck, 0, 8); EnqueueTransfer(handle.Chunks); }
void AddUploadHandle(TransferHandle h) { Invoke(() => transfers.Add(h)); h.PropertyChanged += (s, ev) => { h.TransferEnded += (s1, e1) => ShowFiles(currentNode, true); }; SetStatusDone(); }
private void AddDownloadHandle(TransferHandle h) { Invoke(() => Transfers.Add(h)); h.TransferEnded += (s1, e1) => { if (Transfers.All(t => t.Progress >= 100)) { Status = ConnectivityStatus.Online; } }; }
void CancelTransfer(TransferHandle handle, bool warn = true) { if (warn && (handle.Status == TransferHandleStatus.Downloading || handle.Status == TransferHandleStatus.Uploading)) { var type = (handle.Status == TransferHandleStatus.Downloading ? "download" : "upload"); var text = String.Format("Are you sure to cancel the {0} process for {1}?", type, handle.Node.Attributes.Name); if (MessageBox.Show(text, "Cancel " + type, MessageBoxButton.YesNo) == MessageBoxResult.No) { return; } } handle.CancelTransfer(); }
public override void StartTransfer(TransferHandle hndl) { UploadHandle handle = null; try{ handle = (UploadHandle)hndl;} catch(InvalidCastException) { throw new ArgumentException("Only UploadHandle is supported"); } handle.UploadKey = Crypto.RandomKey(24); var ul_aes_key = new byte[16]; Array.Copy(handle.UploadKey, ul_aes_key, 16); handle.AesAlg = Crypto.CreateAes(ul_aes_key); handle.Nonce = new byte[8]; Array.Copy(handle.UploadKey, 16, handle.Nonce, 0, 8); EnqueueCrypt(handle.Chunks); }
public override void StartTransfer(TransferHandle hndl) { UploadHandle handle = null; try{ handle = (UploadHandle)hndl; } catch (InvalidCastException) { throw new ArgumentException("Only UploadHandle is supported"); } handle.UploadKey = Crypto.RandomKey(24); var ul_aes_key = new byte[16]; Array.Copy(handle.UploadKey, ul_aes_key, 16); handle.AesAlg = Crypto.CreateAes(ul_aes_key); handle.Nonce = new byte[8]; Array.Copy(handle.UploadKey, 16, handle.Nonce, 0, 8); EnqueueCrypt(handle.Chunks); }
public override void StartTransfer(TransferHandle hndl) { DownloadHandle handle = null; try { handle = (DownloadHandle)hndl; } catch (InvalidCastException) { throw new ArgumentException("Only DownloadHandle is supported"); } byte[] dlKey = new byte[handle.Node.NodeKey.DecryptedKey.Length]; Array.Copy(handle.Node.NodeKey.DecryptedKey, dlKey, dlKey.Length); if (dlKey.Length > 16) { dlKey.XorWith(0, dlKey, 16, 16); } var aesKey = new byte[16]; Array.Copy(dlKey, aesKey, 16); handle.AesAlg = Crypto.CreateAes(aesKey); handle.Nonce = new byte[8]; Array.Copy(dlKey, 16, handle.Nonce, 0, 8); handle.MacCheck = new byte[8]; Array.Copy(dlKey, 24, handle.MacCheck, 0, 8); EnqueueTransfer(handle.Chunks); }
public abstract void StartTransfer(TransferHandle handle);
public abstract void StartTransfer(TransferHandle handle);
// di container: autofac, castle windsor, ninject IoC, Di, Inversion of control public TransferMoney(TransferHandle handle, ILogTransfers logger) { Handle = handle; Logger = logger; }
void AddDownloadHandle(TransferHandle h) { Invoke(() => transfers.Add(h)); SetStatusDone(); }
// di container: autofac, castle windsor, ninject IoC, Di, Inversion of control public TransferMoney(TransferHandle handle, ILogTransfers logger) { Handle = handle; Logger = logger; }