public void Execute()
        {
            var VONAGE_API_KEY    = Environment.GetEnvironmentVariable("VONAGE_API_KEY") ?? "VONAGE_API_KEY";
            var VONAGE_API_SECRET = Environment.GetEnvironmentVariable("VONAGE_API_SECRET") ?? "VONAGE_API_SECRET";
            var INSIGHT_NUMBER    = Environment.GetEnvironmentVariable("INSIGHT_NUMBER") ?? "INSIGHT_NUMBER";

            var creds  = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
            var client = new VonageClient(creds);

            var request = new StandardNumberInsightRequest()
            {
                Number = INSIGHT_NUMBER
            };
            var response = client.NumberInsightClient.GetNumberInsightStandard(request);

            Console.WriteLine($"Standard insights request complete\nStatus: {response.Status}.\n" +
                              $"Carrier: {response.CurrentCarrier?.Name}\nNumber ported status: {response.Ported} ");
        }
        public void TestStandardNIRequest(bool passCreds, bool kitchenSink)
        {
            //ARRANGE
            var expectedResponse = @"{
              ""status"": 0,
              ""status_message"": ""Success"",
              ""request_id"": ""aaaaaaaa-bbbb-cccc-dddd-0123456789ab"",
              ""international_format_number"": ""447700900000"",
              ""national_format_number"": ""07700 900000"",
              ""country_code"": ""GB"",
              ""country_code_iso3"": ""GBR"",
              ""country_name"": ""United Kingdom"",
              ""country_prefix"": ""44"",
              ""request_price"": ""0.04000000"",
              ""refund_price"": ""0.01500000"",
              ""remaining_balance"": ""1.23456789"",
              ""current_carrier"": {
                ""network_code"": ""12345"",
                ""name"": ""Acme Inc"",
                ""country"": ""GB"",
                ""network_type"": ""mobile""
              },
              ""original_carrier"": {
                ""network_code"": ""12345"",
                ""name"": ""Acme Inc"",
                ""country"": ""GB"",
                ""network_type"": ""mobile""
              },
              ""ported"": ""not_ported"",
              ""roaming"": {
                            ""status"": ""roaming"",
                ""roaming_country_code"": ""US"",
                ""roaming_network_code"": ""12345"",
                ""roaming_network_name"": ""Acme Inc""
              },
              ""caller_identity"": {
                            ""caller_type"": ""consumer"",
                ""caller_name"": ""John Smith"",
                ""first_name"": ""John"",
                ""last_name"": ""Smith""
              },
              ""caller_name"": ""John Smith"",
              ""last_name"": ""Smith"",
              ""first_name"": ""John"",
              ""caller_type"": ""consumer""
            }";
            var expectedUri      = $"{ApiUrl}/ni/standard/json";
            StandardNumberInsightRequest request;

            if (kitchenSink)
            {
                expectedUri += $"?cnam=true&number=15555551212&country=GB&api_key={ApiKey}&api_secret={ApiSecret}&";
                request      = new StandardNumberInsightRequest {
                    Cnam = true, Country = "GB", Number = "15555551212"
                };
            }
            else
            {
                expectedUri += $"?number=15555551212&api_key={ApiKey}&api_secret={ApiSecret}&";
                request      = new StandardNumberInsightRequest
                {
                    Number = "15555551212"
                };
            }

            Setup(expectedUri, expectedResponse);

            //ACT
            var creds  = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret);
            var client = new NexmoClient(creds);
            StandardInsightResponse response;

            if (passCreds)
            {
                response = client.NumberInsightClient.GetNumberInsightStandard(request, creds);
            }
            else
            {
                response = client.NumberInsightClient.GetNumberInsightStandard(request);
            }
            Assert.Equal("John", response.FirstName);
            Assert.Equal(CallerType.consumer, response.CallerType);
            Assert.Equal("Smith", response.LastName);
            Assert.Equal("John Smith", response.CallerName);
            Assert.Equal("Smith", response.CallerIdentity.LastName);
            Assert.Equal("John", response.CallerIdentity.FirstName);
            Assert.Equal("John Smith", response.CallerIdentity.CallerName);
            Assert.Equal(CallerType.consumer, response.CallerIdentity.CallerType);
            Assert.Equal("Acme Inc", response.Roaming.RoamingNetworkName);
            Assert.Equal("12345", response.Roaming.RoamingNetworkCode);
            Assert.Equal("US", response.Roaming.RoamingCountryCode);
            Assert.Equal(RoamingStatus.roaming, response.Roaming.Status);
            Assert.Equal(PortedStatus.not_ported, response.Ported);
            Assert.Equal("12345", response.OriginalCarrier.NetworkCode);
            Assert.Equal("Acme Inc", response.OriginalCarrier.Name);
            Assert.Equal("GB", response.OriginalCarrier.Country);
            Assert.Equal("mobile", response.OriginalCarrier.NetworkType);
            Assert.Equal(0, response.Status);
            Assert.Equal("Success", response.StatusMessage);
            Assert.Equal("aaaaaaaa-bbbb-cccc-dddd-0123456789ab", response.RequestId);
            Assert.Equal("447700900000", response.InternationalFormatNumber);
            Assert.Equal("07700 900000", response.NationalFormatNumber);
            Assert.Equal("GB", response.CountryCode);
            Assert.Equal("GBR", response.CountryCodeIso3);
            Assert.Equal("United Kingdom", response.CountryName);
            Assert.Equal("44", response.CountryPrefix);
            Assert.Equal("0.04000000", response.RequestPrice);
            Assert.Equal("0.01500000", response.RefundPrice);
            Assert.Equal("1.23456789", response.RemainingBalance);
            Assert.Equal("12345", response.CurrentCarrier.NetworkCode);
            Assert.Equal("Acme Inc", response.CurrentCarrier.Name);
            Assert.Equal("GB", response.CurrentCarrier.Country);
            Assert.Equal("mobile", response.CurrentCarrier.NetworkType);
        }