public async Task <HelixEventSubSubscriptionData> CreateEventSubSubscription(HelixEventSubSubscriptionCreateRequest request, CancellationToken cancellationToken = default) { var uri = "https://api.twitch.tv/helix/eventsub/subscriptions"; var jsonContent = JsonContent.Create(request); jsonContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); var jsonMessage = new HttpRequestMessage(HttpMethod.Post, uri) { Content = jsonContent }; await _authenticated.AuthenticateMessageAsync(jsonMessage, cancellationToken); var result = await _httpClient.SendAsync(jsonMessage, cancellationToken); result.EnsureSuccessStatusCode(); var response = await JsonSerializer.DeserializeAsync <HelixEventSubSubscriptionsListReponse>(await result.Content.ReadAsStreamAsync()); return(response.Data[0]); }
// TODO: this is going to be a large region, take it out when refactoring the API #region EventSub public Task CreateEventSubChannelUpdateSubscription(string broadcasterId, Uri callback, string secret, CancellationToken?cancellationToken = null) { var request = new HelixEventSubSubscriptionCreateRequest { Type = EventSubTypes.ChannelUpdate, Condition = new Dictionary <string, string> { { "broadcaster_user_id", broadcasterId } }, Transport = new HelixEventSubTransport { Method = "webhook", Callback = callback, Secret = secret, }, Version = "1", }; return(CreateEventSubSubscription(request, cancellationToken ?? CancellationToken.None)); }