public async Task SendAsync(IUsageMetric usageMetric)
        {
            var json    = Serialize(usageMetric);
            var content = new StringContent(json, Encoding.UTF8, "application/json");

            await _httpHandler.PostAsync(new Uri(_baseUri, usageMetric.Product), content);
        }
        public void Send(IUsageMetric usageMetric)
        {
            var json    = Serialize(usageMetric);
            var content = new StringContent(json, Encoding.UTF8, "application/json");

            _httpHandler.Post(new Uri(_baseUri, usageMetric.Product), content);
        }
        protected string ConvertToJson(IUsageMetric metric)
        {
            DefaultContractResolver contractResolver = new DefaultContractResolver()
            {
                NamingStrategy = new SnakeCaseNamingStrategy()
            };

            var settings = new JsonSerializerSettings()
            {
                ContractResolver = contractResolver,
                Formatting       = Formatting.Indented
            };

            return(JsonConvert.SerializeObject(metric, settings));
        }
        private string Serialize(IUsageMetric usageMetric)
        {
            DefaultContractResolver contractResolver = new DefaultContractResolver()
            {
                NamingStrategy = new SnakeCaseNamingStrategy(),
            };

            var settings = new JsonSerializerSettings()
            {
                ContractResolver = contractResolver,
                Formatting       = Formatting.Indented
            };

            settings.Converters.Add(new StringEnumConverter {
                CamelCaseText = true
            });

            return(JsonConvert.SerializeObject(usageMetric, settings));
        }