Added initial readfile activity

This commit is contained in:
Cameron Cowen 2021-05-09 17:13:07 +01:00
parent bb535fed93
commit b3efb27722
4 changed files with 101 additions and 10 deletions

View file

@ -0,0 +1,28 @@
using Elsa.ActivityResults;
using Elsa.Attributes;
using Elsa.Design;
using Elsa.Expressions;
using Elsa.Services;
using Elsa.Services.Models;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace Elsa.Activities.File
{
[Action(Category = "File",
Description = "Output input value to specified location",
Outcomes = new[] { OutcomeNames.Done })]
public class ReadFile : Activity
{
[ActivityProperty(Hint = "Path to read content from.", UIHint = ActivityPropertyUIHints.SingleLine, SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })]
public string Path { get; set; }
public async override ValueTask<IActivityExecutionResult> ExecuteAsync(ActivityExecutionContext context)
{
var content = System.IO.File.ReadAllTextAsync(Path);
return Done(content);
}
}
}

View file

@ -0,0 +1,46 @@
using Elsa.Builders;
using Elsa.Services.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace Elsa.Activities.File
{
public static class ReadFileBuilderExtensions
{
public static IActivityBuilder ReadFile(this IBuilder builder, Action<ISetupActivity<OutFile>> setup, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.Then(setup, null, lineNumber, sourceFile);
public static IActivityBuilder ReadFile(this IBuilder builder, Func<ActivityExecutionContext, string> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder ReadFile(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder ReadFile(this IBuilder builder, Func<string> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder ReadFile(this IBuilder builder, Func<ValueTask<string>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder ReadFile(this IBuilder builder, string path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
}
}

View file

@ -0,0 +1,19 @@
using Elsa.Builders;
using Elsa.Services.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading.Tasks;
namespace Elsa.Activities.File
{
public static class ReadFileExtensions
{
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<ActivityExecutionContext, ValueTask<string>> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<ActivityExecutionContext, string> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<ValueTask<string>> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<string> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, string path) => setup.Set(x => x.Path, path);
}
}

View file

@ -1,6 +1,7 @@
using Elsa;
using Elsa.Activities.File;
using Elsa.Activities.File.Options;
using Elsa.Activities.File.Services;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
@ -15,16 +16,12 @@ namespace Microsoft.Extensions.DependencyInjection
return services;
}
public static ElsaOptionsBuilder AddFileActivities(this ElsaOptionsBuilder builder, Action<FileWatcherOptions>? configureOptions = null)
{
builder.Services.AddFileServices(configureOptions);
builder.AddActivity<DeleteFile>();
builder.AddActivity<FileExists>();
builder.AddActivity<OutFile>();
builder.AddActivity<TempFile>();
return builder;
}
public static ElsaOptionsBuilder AddFileActivities(this ElsaOptionsBuilder builder, Action<FileWatcherOptions>? configureOptions = null) => builder
.AddActivity<DeleteFile>()
.AddActivity<FileExists>()
.AddActivity<OutFile>()
.AddActivity<ReadFile>()
.AddActivity<TempFile>();
public static IServiceCollection AddFileServices(this IServiceCollection services, Action<FileWatcherOptions>? configureOptions = null)
{
@ -32,6 +29,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
services.Configure(configureOptions);
}
services.AddHostedService<FileWatcherService>();
return services;
}