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);
}
}