Exemplo n.º 1
0
        private ChartBuilder GetChartData(CoinGeckoCurrency coin, CoingGeckoSparkline sparkline)
        {
            var prices = sparkline.SparklineIn7D.Price;

            if (!sparkline.SparklineIn7D.Price.Any())
            {
                return(null);
            }

            var data = FillData(prices);

            var dataset = new Dataset
            {
                BorderColor = sparkline.PriceChangePercentage7d > 0 ? "green" : "red",
                Fill        = false,
                Label       = coin.Name,
                Data        = data.Data
            };

            var options = new Models.Options
            {
                Scales = new Scales
                {
                    YAxes = new List <YAx>
                    {
                        new YAx
                        {
                            Ticks = new Ticks
                            {
                                SuggestedMax = data.Max,
                                SuggestedMin = data.Min
                            }
                        }
                    }
                }
            };

            var chart = new Chart
            {
                Type = "sparkline",
                Data = new Data
                {
                    Datasets = new List <Dataset>
                    {
                        dataset
                    }
                },
                Options = options
            };

            return(new ChartBuilder
            {
                Chart = chart
            });
        }
Exemplo n.º 2
0
        public async Task <string> GetQuickchartURI(CoinGeckoCurrency coin, CoingGeckoSparkline sparkline)
        {
            var chartData = GetChartData(coin, sparkline);

            if (chartData == null)
            {
                return(null);
            }

            var quickchartresult = new QuickchartUrl();

            using (var client = new HttpClient())
                using (var requets = new HttpRequestMessage(HttpMethod.Post, $"{_quickchartOptions.Uri}chart/create"))
                {
                    var json = JsonSerializer.Serialize(chartData);
                    using (var stringContent = new StringContent(json, Encoding.UTF8, "application/json"))
                    {
                        requets.Content = stringContent;
                        using (var response = await client.SendAsync(requets, HttpCompletionOption.ResponseHeadersRead))
                        {
                            if (response.IsSuccessStatusCode)
                            {
                                quickchartresult = await _httpResponseService.DeserializeJsonFromStream <QuickchartUrl>(response);
                            }
                            else
                            {
                                var content = await _httpResponseService.StreamToStringAsync(await response.Content.ReadAsStreamAsync());

                                throw new ApiException(message: content)
                                      {
                                          StatusCode = (int)response.StatusCode,
                                          Content    = content
                                      };
                            }
                        }
                    }
                }

            return(quickchartresult.Success ? quickchartresult.Url : null);
        }