示例#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
        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);
        }