using System.Threading; using System.Threading.Tasks; using RudderSdk.Core.Models.Scenarios; namespace RudderSdk.Core; /// /// Scenario trigger. Execution lives on the server; resulting effects surface /// through . /// public sealed class ScenarioService { private readonly RudderClient _client; internal ScenarioService(RudderClient client) => _client = client; /// /// Triggers scenarios by event name. Returned pending effects are ingested /// into . /// public async Task TriggerAsync(string eventName, CancellationToken cancellationToken = default) { var response = await _client.SendAsync( "POST", "/sdk/v1/scenarios/trigger", new TriggerScenarioRequest { Event = eventName }, cancellationToken).ConfigureAwait(false); _client.Effects.Ingest(response?.Effects); } }