예제 #1
0
        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]);
        }
예제 #2
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));
        }