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]); }
public async Task <Game> GetGameByIdAsync(ulong gameId) { var cacheKey = $"igdb:games:{gameId}"; if (!_cache.TryGetValue(cacheKey, out Game result)) { var message = new HttpRequestMessage(HttpMethod.Post, $"v4/games.pb"); message.Content = new StringContent($"fields *; where id = {gameId};"); await _authenticated.AuthenticateMessageAsync(message); var response = await _httpClient.SendAsync(message); response.EnsureSuccessStatusCode(); using (var responseStream = await response.Content.ReadAsStreamAsync()) { result = Serializer.Deserialize <GameResult>(responseStream).Games.FirstOrDefault(); } _cache.Set(cacheKey, result); } return(result); }