Reworked outfile and readfile to use byte[]
This commit is contained in:
parent
01d952c6ee
commit
5d75523c8b
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,41 +13,41 @@ namespace Elsa.Activities.File
|
|||
{
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Action<ISetupActivity<OutFile>> setup, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.Then(setup, null, lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<ActivityExecutionContext, string> content, Func<ActivityExecutionContext, string> path, Func<ActivityExecutionContext, CopyMode> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<ActivityExecutionContext, byte[]> data, Func<ActivityExecutionContext, string> path, Func<ActivityExecutionContext, 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,
|
||||
sourceFile);
|
||||
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string>> content, Func<ActivityExecutionContext, ValueTask<string>> path, Func<ActivityExecutionContext, ValueTask<CopyMode>> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<byte[]>> data, Func<ActivityExecutionContext, ValueTask<string>> path, Func<ActivityExecutionContext, ValueTask<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,
|
||||
sourceFile);
|
||||
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<string> content, Func<string> path, Func<CopyMode> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<byte[]> data, Func<string> path, Func<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,
|
||||
sourceFile);
|
||||
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<ValueTask<string>> content, Func<ValueTask<string>> path, Func<ValueTask<CopyMode>> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<ValueTask<byte[]>> data, Func<ValueTask<string>> path, Func<ValueTask<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,
|
||||
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,
|
||||
|
|
|
|||
|
|
@ -10,12 +10,12 @@ namespace Elsa.Activities.File
|
|||
{
|
||||
public static class OutFileExtensions
|
||||
{
|
||||
#region Content
|
||||
public static ISetupActivity<OutFile> WithContent(this ISetupActivity<OutFile> setup, Func<ActivityExecutionContext, ValueTask<string>> content) => setup.Set(x => x.Content, content);
|
||||
public static ISetupActivity<OutFile> WithContent(this ISetupActivity<OutFile> setup, Func<ActivityExecutionContext, string> content) => setup.Set(x => x.Content, content);
|
||||
public static ISetupActivity<OutFile> WithContent(this ISetupActivity<OutFile> setup, Func<ValueTask<string>> content) => setup.Set(x => x.Content, content);
|
||||
public static ISetupActivity<OutFile> WithContent(this ISetupActivity<OutFile> setup, Func<string> content) => setup.Set(x => x.Content, content);
|
||||
public static ISetupActivity<OutFile> WithContent(this ISetupActivity<OutFile> setup, string content) => setup.Set(x => x.Content, content);
|
||||
#region Data
|
||||
public static ISetupActivity<OutFile> WithContent(this ISetupActivity<OutFile> setup, Func<ActivityExecutionContext, ValueTask<byte[]>> data) => setup.Set(x => x.Data, data);
|
||||
public static ISetupActivity<OutFile> WithContent(this ISetupActivity<OutFile> setup, Func<ActivityExecutionContext, byte[]> data) => setup.Set(x => x.Data, data);
|
||||
public static ISetupActivity<OutFile> WithContent(this ISetupActivity<OutFile> setup, Func<ValueTask<byte[]>> data) => setup.Set(x => x.Data, data);
|
||||
public static ISetupActivity<OutFile> WithContent(this ISetupActivity<OutFile> setup, Func<byte[]> data) => setup.Set(x => x.Data, data);
|
||||
public static ISetupActivity<OutFile> WithContent(this ISetupActivity<OutFile> setup, byte[] data) => setup.Set(x => x.Data, data);
|
||||
#endregion
|
||||
|
||||
#region Path
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ namespace Elsa.Activities.File
|
|||
|
||||
public async override ValueTask<IActivityExecutionResult> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace Elsa.Samples.ReadLineToFile
|
|||
.WithName("TempFile")
|
||||
.OutFile(setup =>
|
||||
{
|
||||
setup.WithContent(context => context.GetOutputFrom<string>("ReadLine"));
|
||||
setup.WithContent(context => System.Text.Encoding.UTF8.GetBytes(context.GetOutputFrom<string>("ReadLine")));
|
||||
setup.WithPath(context => context.GetOutputFrom<string>("TempFile"));
|
||||
setup.WithMode(CopyMode.Overwrite);
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in a new issue