using System.IO; using System.Threading; using System.Threading.Tasks; using Elsa.Activities.Console.Activities; using Elsa.Handlers; using Elsa.Models; using Elsa.Results; using Microsoft.Extensions.Localization; namespace Elsa.Activities.Console.Handlers { /// /// Writes a text string to the specified stream. /// public class WriteLineHandler : ActivityHandler { private readonly IWorkflowExpressionEvaluator evaluator; private readonly TextWriter output; public WriteLineHandler(IStringLocalizer localizer, IWorkflowExpressionEvaluator evaluator) : this(localizer, evaluator, System.Console.Out) { } public WriteLineHandler(IStringLocalizer localizer, IWorkflowExpressionEvaluator evaluator, TextWriter output) { T = localizer; this.evaluator = evaluator; this.output = output; } private IStringLocalizer T { get; } protected override LocalizedString GetEndpoint() => T["Done"]; public override LocalizedString Category => T["Console"]; public override LocalizedString DisplayText => T["Write Line"]; public override LocalizedString Description => T["Write a line to the console"]; protected override async Task OnExecuteAsync(WriteLine activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) { var text = await evaluator.EvaluateAsync(activity.TextExpression, workflowContext, cancellationToken); await output.WriteLineAsync(text); return TriggerEndpoint("Done"); } } }