Exemple #1
0
        public async Task <IDataTransferCollection <Achievement> > GetAchievementsByIds(IReadOnlyCollection <int> achievementIds)
        {
            if (achievementIds == null)
            {
                throw new ArgumentNullException(nameof(achievementIds));
            }

            if (achievementIds.Count == 0)
            {
                throw new ArgumentException("Achievement IDs cannot be an empty collection.", nameof(achievementIds));
            }

            var request = new AchievementsByIdsRequest(achievementIds);

            using var response = await _http.SendAsync(request).ConfigureAwait(false);

            response.EnsureSuccessStatusCode();
            var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

            var context = response.Headers.GetCollectionContext();
            var list    = new List <Achievement>(context.ResultCount);

            JsonConvert.PopulateObject(json, list, Json.DefaultJsonSerializerSettings);
            return(new DataTransferCollection <Achievement>(list, context));
        }
Exemple #2
0
        private async Task <List <string> > GetJsonAchievementsByIds(IReadOnlyCollection <int> achievementIds, bool indented)
        {
            var request = new AchievementsByIdsRequest(achievementIds);

            using var response = await _http.SendAsync(request);

            using var responseReader = new StreamReader(await response.Content.ReadAsStreamAsync());
            using var jsonReader     = new JsonTextReader(responseReader);
            response.EnsureSuccessStatusCode();

            // API returns a JSON array but we want a List of JSON objects instead
            var array = await JToken.ReadFromAsync(jsonReader);

            return(array.Children <JObject>().Select(achievement => achievement.ToString(indented ? Formatting.Indented : Formatting.None)).ToList());
        }