public async Task <IReadOnlyCollection <Quote> > GetQuotesSnapshotAsync(params string[] securityIds) { var parsedIds = SecurityIdCollection.TryParse(securityIds).ToList(); if (parsedIds.Count == 0) { return(new List <Quote>(0)); } using (var client = new HttpClient() { BaseAddress = baseUrl }) { var symbols = string.Join(",", parsedIds); var results = await client.GetStringAsync("info?client=ig&q=" + exchange + ":" + symbols).ConfigureAwait(false); var obj = (dynamic)Newtonsoft.Json.JsonConvert.DeserializeObject(results.Substring(4)); var quotes = new List <Quote>(obj.Count); foreach (var quote in obj) { quotes.Add(new Quote((string)quote.t, (decimal)quote.l, (decimal)quote.c)); } return(quotes); } }