public async Task <CoinMarketCapResponse <T> > SendAsync <T>(CoinMarketCapRequest request)
        {
            using (var http = new HttpClient())
            {
                var builder = new UriBuilder(BaseUrl)
                {
                    Path  = request.RelativeUrl,
                    Query = request.Properties.ToQueryString()
                };

                var response = await http.GetAsync(builder.Uri);

                var content = await response.Content.ReadAsStringAsync();

                if (!response.IsSuccessStatusCode)
                {
                    var error = JsonConvert.DeserializeObject <CoinMarketCapError>(content);
                    throw new CoinMarketCapException(error.Message);
                }

                var result = JsonConvert.DeserializeObject <T>(content);

                return(new CoinMarketCapResponse <T>
                {
                    Result = result
                });
            }
        }
        public static async Task <Ticker[]> GetTickersAsync(this CoinMarketCapClient client, Int32 limit = 100)
        {
            var request = new CoinMarketCapRequest
            {
                RelativeUrl = "/v1/ticker",
                Properties  = new Dictionary <String, String>
                {
                    ["limit"] = limit.ToString()
                }
            };

            var response = await client.SendAsync <Ticker[]>(request);

            return(response.Result);
        }