diff --git a/src/activities/Elsa.Activities.File/Activities/OutFile/OutFile.cs b/src/activities/Elsa.Activities.File/Activities/OutFile/OutFile.cs index 88441d7fb..1194f53a7 100644 --- a/src/activities/Elsa.Activities.File/Activities/OutFile/OutFile.cs +++ b/src/activities/Elsa.Activities.File/Activities/OutFile/OutFile.cs @@ -17,8 +17,8 @@ namespace Elsa.Activities.File Outcomes = new[] { OutcomeNames.Done })] public class OutFile : Activity { - [ActivityInput(Hint = "Content of the file.", UIHint = ActivityInputUIHints.MultiLine, SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })] - public string Content { get; set; } + [ActivityInput(Hint = "Data to write to file.", SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })] + public byte[] Data { get; set; } [ActivityInput(Hint = "Path to create file at.", UIHint = ActivityInputUIHints.SingleLine, SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })] public string Path { get; set; } @@ -49,10 +49,8 @@ namespace Elsa.Activities.File } using (var fs = new FileStream(Path, fileMode, fileAccess)) - using (var sw = new StreamWriter(fs)) { - await sw.WriteLineAsync(Content); - await sw.FlushAsync(); + await fs.WriteAsync(Data); await fs.FlushAsync(); } diff --git a/src/activities/Elsa.Activities.File/Activities/OutFile/OutFileBuilderExtensions.cs b/src/activities/Elsa.Activities.File/Activities/OutFile/OutFileBuilderExtensions.cs index 6465197ad..659d7da74 100644 --- a/src/activities/Elsa.Activities.File/Activities/OutFile/OutFileBuilderExtensions.cs +++ b/src/activities/Elsa.Activities.File/Activities/OutFile/OutFileBuilderExtensions.cs @@ -13,41 +13,41 @@ namespace Elsa.Activities.File { public static IActivityBuilder OutFile(this IBuilder builder, Action> setup, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.Then(setup, null, lineNumber, sourceFile); - public static IActivityBuilder OutFile(this IBuilder builder, Func content, Func path, Func mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => + public static IActivityBuilder OutFile(this IBuilder builder, Func data, Func path, Func mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.OutFile(activity => activity - .Set(x => x.Content, content) + .Set(x => x.Data, data) .Set(x => x.Path, path) .Set(x => x.Mode, mode), lineNumber, sourceFile); - public static IActivityBuilder OutFile(this IBuilder builder, Func> content, Func> path, Func> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => + public static IActivityBuilder OutFile(this IBuilder builder, Func> data, Func> path, Func> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.OutFile(activity => activity - .Set(x => x.Content, content) + .Set(x => x.Data, data) .Set(x => x.Path, path) .Set(x => x.Mode, mode), lineNumber, sourceFile); - public static IActivityBuilder OutFile(this IBuilder builder, Func content, Func path, Func mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => + public static IActivityBuilder OutFile(this IBuilder builder, Func data, Func path, Func mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.OutFile(activity => activity - .Set(x => x.Content, content) + .Set(x => x.Data, data) .Set(x => x.Path, path) .Set(x => x.Mode, mode), lineNumber, sourceFile); - public static IActivityBuilder OutFile(this IBuilder builder, Func> content, Func> path, Func> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => + public static IActivityBuilder OutFile(this IBuilder builder, Func> data, Func> path, Func> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.OutFile(activity => activity - .Set(x => x.Content, content) + .Set(x => x.Data, data) .Set(x => x.Path, path) .Set(x => x.Mode, mode), lineNumber, sourceFile); - public static IActivityBuilder OutFile(this IBuilder builder, string content, string path, CopyMode mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => + public static IActivityBuilder OutFile(this IBuilder builder, byte[] data, string path, CopyMode mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.OutFile(activity => activity - .Set(x => x.Content, content) + .Set(x => x.Data, data) .Set(x => x.Path, path) .Set(x => x.Mode, mode), lineNumber, diff --git a/src/activities/Elsa.Activities.File/Activities/OutFile/OutFileExtensions.cs b/src/activities/Elsa.Activities.File/Activities/OutFile/OutFileExtensions.cs index 3c74baca9..16823318a 100644 --- a/src/activities/Elsa.Activities.File/Activities/OutFile/OutFileExtensions.cs +++ b/src/activities/Elsa.Activities.File/Activities/OutFile/OutFileExtensions.cs @@ -10,12 +10,12 @@ namespace Elsa.Activities.File { public static class OutFileExtensions { - #region Content - public static ISetupActivity WithContent(this ISetupActivity setup, Func> content) => setup.Set(x => x.Content, content); - public static ISetupActivity WithContent(this ISetupActivity setup, Func content) => setup.Set(x => x.Content, content); - public static ISetupActivity WithContent(this ISetupActivity setup, Func> content) => setup.Set(x => x.Content, content); - public static ISetupActivity WithContent(this ISetupActivity setup, Func content) => setup.Set(x => x.Content, content); - public static ISetupActivity WithContent(this ISetupActivity setup, string content) => setup.Set(x => x.Content, content); + #region Data + public static ISetupActivity WithContent(this ISetupActivity setup, Func> data) => setup.Set(x => x.Data, data); + public static ISetupActivity WithContent(this ISetupActivity setup, Func data) => setup.Set(x => x.Data, data); + public static ISetupActivity WithContent(this ISetupActivity setup, Func> data) => setup.Set(x => x.Data, data); + public static ISetupActivity WithContent(this ISetupActivity setup, Func data) => setup.Set(x => x.Data, data); + public static ISetupActivity WithContent(this ISetupActivity setup, byte[] data) => setup.Set(x => x.Data, data); #endregion #region Path diff --git a/src/activities/Elsa.Activities.File/Activities/ReadFile/ReadFile.cs b/src/activities/Elsa.Activities.File/Activities/ReadFile/ReadFile.cs index b758b63bb..9abdc30f6 100644 --- a/src/activities/Elsa.Activities.File/Activities/ReadFile/ReadFile.cs +++ b/src/activities/Elsa.Activities.File/Activities/ReadFile/ReadFile.cs @@ -21,8 +21,8 @@ namespace Elsa.Activities.File public async override ValueTask ExecuteAsync(ActivityExecutionContext context) { - var content = await System.IO.File.ReadAllTextAsync(Path); - return Done(content); + var data = await System.IO.File.ReadAllBytesAsync(Path); + return Done(data); } } } diff --git a/src/samples/console/Elsa.Samples.ReadLineToFile/ReadLineToFileWorkflow.cs b/src/samples/console/Elsa.Samples.ReadLineToFile/ReadLineToFileWorkflow.cs index 89e47feed..d11a29a28 100644 --- a/src/samples/console/Elsa.Samples.ReadLineToFile/ReadLineToFileWorkflow.cs +++ b/src/samples/console/Elsa.Samples.ReadLineToFile/ReadLineToFileWorkflow.cs @@ -21,7 +21,7 @@ namespace Elsa.Samples.ReadLineToFile .WithName("TempFile") .OutFile(setup => { - setup.WithContent(context => context.GetOutputFrom("ReadLine")); + setup.WithContent(context => System.Text.Encoding.UTF8.GetBytes(context.GetOutputFrom("ReadLine"))); setup.WithPath(context => context.GetOutputFrom("TempFile")); setup.WithMode(CopyMode.Overwrite); })