private static HttpClient GetHttpClient(CryptoCompareSettings settings) { var httpClient = new HttpClient { BaseAddress = new Uri(settings.Url) }; httpClient.DefaultRequestHeaders.Add(TokenName, settings.ApiKey); return(httpClient); }
public List <Investment> GetInvestments(CryptoCompareSettings settings) { var multipleSymbolsUrl = BuildMultipleSymbolsUrl(settings.GetSymbols); var client = GetHttpClient(settings); var response = client.GetAsync(multipleSymbolsUrl).Result; if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsStringAsync().Result; client.Dispose(); var results = GetSymbolToValueDictionary(JsonConvert.DeserializeObject <MultipleSymbols>(result)); return(MapResultsToInvestments(results, settings)); } var errorMessage = response.Content.ReadAsStringAsync().Result; client.Dispose(); throw new Exception(errorMessage); }
private static List <Investment> MapResultsToInvestments(IReadOnlyDictionary <string, double> results, CryptoCompareSettings settings) { var investments = new List <Investment>(); foreach (var symbol in settings.Coins) { if (!results.ContainsKey(symbol.Symbol)) { throw new Exception($"Symbol: {symbol.Symbol} not implemented on MultipleSymbols Class"); } var investment = new Investment { Symbol = symbol.Symbol, CurrentPrice = results[symbol.Symbol], InvestmentAmount = symbol.Investment, Count = symbol.Count }; investments.Add(investment); } return(investments); }