public async Task <IDataTransferCollection <Skin> > GetSkinsByIds(IReadOnlyCollection <int> skinIds) { if (skinIds == null) { throw new ArgumentNullException(nameof(skinIds)); } if (skinIds.Count == 0) { throw new ArgumentException("Skin IDs cannot be an empty collection.", nameof(skinIds)); } var request = new SkinsByIdsRequest(skinIds); 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 <Skin>(context.ResultCount); JsonConvert.PopulateObject(json, list, Json.DefaultJsonSerializerSettings); return(new DataTransferCollection <Skin>(list, context)); }
private async Task <List <string> > GetJsonSkinsByIds(IReadOnlyCollection <int> skinIds, bool indented) { var request = new SkinsByIdsRequest(skinIds); 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(skin => skin.ToString(indented ? Formatting.Indented : Formatting.None)).ToList()); }