private static string ToLifeCycleStatus(BroadcastStatus status) { switch (status) { case BroadcastStatus.Testing: return("testing"); case BroadcastStatus.Live: return("liveStarting"); case BroadcastStatus.Complete: return("complete"); default: throw new NotImplementedException(); } }
private async Task Transition(string eventId, BroadcastStatus status) { var testRequest = _service.LiveBroadcasts.Transition(status, eventId, "id"); await testRequest.ExecuteAsync(); var lifeCycleStatus = ToLifeCycleStatus(status); while (true) { await Task.Delay(TimeSpan.FromSeconds(1)); var request = _service.LiveBroadcasts.List("id, status"); request.Id = eventId; var response = await request.ExecuteAsync(); var item = response.Items.Single(); if (item.Status.LifeCycleStatus == lifeCycleStatus) { return; } Debug.WriteLine($"Current: {item.Status.LifeCycleStatus}, Waiting For: {lifeCycleStatus}"); } }