Example #1
0
        private static HttpClient GetHttpClient(CryptoCompareSettings settings)
        {
            var httpClient = new HttpClient {
                BaseAddress = new Uri(settings.Url)
            };

            httpClient.DefaultRequestHeaders.Add(TokenName, settings.ApiKey);
            return(httpClient);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }