protected override async Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken) { // Inputs var text = Text.Get(context); var password = Key.Get(context); var encoding = TextEncoding.Get(context); var iterations = Iterations.Get(context); string result = text; if (!string.IsNullOrEmpty(text)) { using (var crypto = new Crypto(Algorithm, encoding, iterations)) result = crypto.Encrypt(text, password); } return((ctx) => Result.Set(ctx, result)); }
private void OnComplete(NativeActivityContext context, ActivityInstance completedInstance, IEncryption result) { if (result == null) { throw new ArgumentNullException(nameof(result)); } var encoding = TextEncoding.Get(context); var input = Input.Get(context); var pass = GetRawKey(context); if (Action == CryptoActions.Encrypt) { var encrypted = result.Encrypt(encoding.GetBytes(input), encoding.GetBytes(pass)); Result.Set(context, Convert.ToBase64String(encrypted)); } else { var decrypted = result.Decrypt(Convert.FromBase64String(input), encoding.GetBytes(pass)); Result.Set(context, encoding.GetString(decrypted)); } }
protected override async Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken token) { var zipFilePath = Path.GetFullPath(ZipFilePath.Get(context)); var toCompress = ToCompress.Get(context); var encoding = TextEncoding.Get(context); var counter = 0; if (toCompress is string) { toCompress = new string[] { toCompress.ToString() } } ; await Task.Run(() => { var paths = (IEnumerable <string>)toCompress; var directories = paths.Where(Directory.Exists); var files = paths.Except(directories) .Concat(directories.SelectMany(path => Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories))) .Select(Path.GetFullPath) .Where(path => path != zipFilePath); var emptyFolders = directories.SelectMany(dir => Directory.EnumerateDirectories(dir, "*", SearchOption.AllDirectories)) .Select(Path.GetFullPath) .Where(path => !Directory.EnumerateFileSystemEntries(path).Any()); var entries = files.Concat(emptyFolders).OrderBy(path => path).ToArray(); var mode = File.Exists(zipFilePath) ? ZipArchiveMode.Update : ZipArchiveMode.Create; using (var zip = ZipFile.Open(zipFilePath, mode, encoding)) counter = CompressTo(zip, entries, mode, token, null); }, token).ConfigureAwait(false); return(ctx => FilesCount.Set(ctx, counter)); }
private void OnComplete(NativeActivityContext context, ActivityInstance completedInstance, IEncryption result) { if (result == null) { throw new ArgumentNullException(nameof(result)); } var input = Input.Get(context); var colsLen = input.Columns.Count; var encoding = TextEncoding.Get(context); var pass = GetRawKey(context); var sortBy = Sort.Get(context); var columns = DataTableUtil.IdentifyDataColumns(input, Columns?.Get(context), Enumerable.Range(0, colsLen)).ToList(); Func <string, string> action; if (Action == CryptoActions.Encrypt) { action = (string value) => Convert.ToBase64String(result.Encrypt(encoding.GetBytes(value), encoding.GetBytes(pass))); } else { action = (string value) => encoding.GetString(result.Decrypt(Convert.FromBase64String(value), encoding.GetBytes(pass))); } var rows = input.AsEnumerable(); var values = new List <object[]>(); void Add(DataRow row) { values.Add(ApplyTo(row, colsLen, columns, action)); } if (ParallelProcessing) { Parallel.ForEach(rows, Add); } else { foreach (DataRow row in input.Rows) { Add(row); } } var output = CreateCryptoDataTable(input, columns); output.BeginLoadData(); foreach (var value in values) { output.LoadDataRow(value, false); } output.AcceptChanges(); output.EndLoadData(); if (!string.IsNullOrWhiteSpace(sortBy)) { output.DefaultView.Sort = sortBy; output = output.DefaultView.ToTable(); } Result.Set(context, output); }