← All source files

V13 / 7879e8b5740b

ScenarioBoundOperations.cs

Lilith/Core/Scenarios/ScenarioBoundOperations.cs

Changed in this version
CS
using Lilith.Core.Personality;
using Lilith.Core.WebResearch;

namespace Lilith.Core.Scenarios;

internal static class ScenarioBoundOperations
{
    internal static bool Known(string name) => Lilith.Core.Email.EmailOperations.Names.Contains(name) || WebOperations.Names.Contains(name) || PersonalityOperations.Names.Contains(name) || Lilith.Core.Calendar.CalendarOperations.Names.Contains(name) || Lilith.Core.Projects.ProjectOperations.Names.Contains(name) || Lilith.Core.Projects.ProjectEditingOperations.Names.Contains(name);
    internal static Task<string> ExecuteAsync(ProviderClient parent, ScenarioRunPlan plan, string name,
        IReadOnlyDictionary<string, string> inputs, CancellationToken ct)
    {
        ct.ThrowIfCancellationRequested();
        if (Lilith.Core.Email.EmailOperations.Names.Contains(name)) return Lilith.Core.Email.EmailOperations.ExecuteAsync(parent, name, inputs, ct);
        if (Lilith.Core.Projects.ProjectEditingOperations.Names.Contains(name)) return Lilith.Core.Projects.ProjectEditingOperations.ExecuteAsync(parent, name, inputs, ct);
        if (Lilith.Core.Projects.ProjectOperations.Names.Contains(name)) return Lilith.Core.Projects.ProjectOperations.ExecuteAsync(plan.Projects, name, inputs, ct);
        if (Lilith.Core.Calendar.CalendarOperations.Names.Contains(name)) return Task.FromResult(Lilith.Core.Calendar.CalendarOperations.Execute(parent, name, inputs));
        return PersonalityOperations.Names.Contains(name)
            ? Task.FromResult(PersonalityOperations.Execute(parent, name, inputs))
            : WebOperations.ExecuteAsync(plan.Browser, name, inputs, ct);
    }
}