Example #1
0
        public void should_send_standard_ni_request()
        {
            var resp = new Mock <IWebResponse>();

            resp.Setup(e => e.GetResponseStream()).Returns(new MemoryStream(Encoding.UTF8.GetBytes("{\"status\": 0,\"status_message\": \"Success\",\"request_id\": \"bcf255a4-047c-4364-89b1-d5cf76ffffff\",\"international_format_number\": \"15555551212\",\"national_format_number\": \"(555) 555-1212\",\"country_code\": \"US\",\"country_code_iso3\": \"USA\",\"country_name\": \"United States of America\",\"country_prefix\": \"1\",\"request_price\": \"0.00500000\",\"remaining_balance\": \"1.1\",\"current_carrier\": {\"network_code\": \"310004\",\"name\": \"Verizon Wireless\",\"country\": \"US\",\"network_type\": \"mobile\"},\"original_carrier\": {\"network_code\": \"310004\",\"name\": \"Verizon Wireless\",\"country\": \"US\",\"network_type\": \"mobile\"}}")));
            var postDataStream = new MemoryStream();

            _request.Setup(e => e.GetRequestStream()).Returns(postDataStream);
            _request.Setup(e => e.GetResponse()).Returns(resp.Object);
            var result = NumberInsight.RequestStandard(new NumberInsight.NumberInsightBasicRequest
            {
                number = "15555551212"
            });

            _mock.Verify(h => h.CreateHttp(new Uri(
                                               string.Format("{0}/number/lookup/json", ApiUrl))),
                         Times.Once);
            postDataStream.Position = 0;
            var sr       = new StreamReader(postDataStream);
            var postData = sr.ReadToEnd();

            Assert.AreEqual(string.Format("number=15555551212&api_key={0}&api_secret={1}&", ApiKey, ApiSecret), postData);

            Assert.AreEqual("0", result.status);
            Assert.AreEqual("15555551212", result.international_format_number);
            Assert.AreEqual("(555) 555-1212", result.national_format_number);
            Assert.AreEqual("Verizon Wireless", result.current_carrier.name);
        }
        public ActionResult Standard(string number)
        {
            var results = NumberInsight.RequestStandard(new NumberInsight.NumberInsightBasicRequest()
            {
                number = number,
            });

            Session["requestID"]              = results.request_id;
            Session["iNumber"]                = results.international_format_number;
            Session["nNumber"]                = results.national_format_number;
            Session["country"]                = results.country_name;
            Session["countryCode"]            = results.country_code;
            Session["status"]                 = results.status_message;
            Session["currentCarrierName"]     = results.original_carrier.name;
            Session["currentCarrierCode"]     = results.current_carrier.network_code;
            Session["currentCarrierType"]     = results.current_carrier.network_type;
            Session["currentCarrierCountry"]  = results.current_carrier.country;
            Session["originalCarrierName"]    = results.original_carrier.name;
            Session["originalCarrierCode"]    = results.original_carrier.network_code;
            Session["originalCarrierType"]    = results.original_carrier.network_type;
            Session["originalCarrierCountry"] = results.original_carrier.country;



            return(RedirectToAction("StandardResults"));
        }
Example #3
0
        public void should_send_basic_ni_request()
        {
            var resp = new Mock <IWebResponse>();

            resp.Setup(e => e.GetResponseStream()).Returns(new MemoryStream(Encoding.UTF8.GetBytes("{\"status\": 0,\"status_message\": \"Success\",\"request_id\": \"ca4f82b6-73aa-43fe-8c52-874fd9ffffff\",\"international_format_number\": \"15555551212\",\"national_format_number\": \"(555) 555-1212\",\"country_code\": \"US\",\"country_code_iso3\": \"USA\",\"country_name\": \"United States of America\",\"country_prefix\": \"1\"}")));
            var postDataStream = new MemoryStream();

            _request.Setup(e => e.GetRequestStream()).Returns(postDataStream);
            _request.Setup(e => e.GetResponse()).Returns(resp.Object);
            var result = NumberInsight.RequestBasic(new NumberInsight.NumberInsightBasicRequest
            {
                number = "15555551212"
            });

            _mock.Verify(h => h.CreateHttp(new Uri(
                                               string.Format("{0}/number/format/json", ApiUrl))),
                         Times.Once);
            postDataStream.Position = 0;
            var sr       = new StreamReader(postDataStream);
            var postData = sr.ReadToEnd();

            Assert.AreEqual(string.Format("number=15555551212&api_key={0}&api_secret={1}&", ApiKey, ApiSecret), postData);

            Assert.AreEqual("0", result.status);
            Assert.AreEqual("15555551212", result.international_format_number);
            Assert.AreEqual("(555) 555-1212", result.national_format_number);
        }
Example #4
0
        public async Task <IActionResult> Process([FromQuery] string num, [FromQuery] string token)
        {
            var cleanNum = Regex.Replace(num ?? "", "[^0-9]", "");

            token = token ?? "e30=";
            var filter = BeaconJsonConvert.DeserializeObject <Filter>(Encoding.ASCII.GetString(Convert.FromBase64String(token)));

            // Get phone number info
            var numInfo = NumberInsight.RequestStandard(new NumberInsight.NumberInsightBasicRequest {
                number = cleanNum
            });

            if (numInfo.status != "0")
            {
                return(new ObjectResult(new { Status = "err", Message = "Invalid phone number" })
                {
                    StatusCode = 400
                });
            }

            var passesFilter = true;

            // Filter on Country if applicable
            if (String.IsNullOrWhiteSpace(filter.Country) == false && filter.Country != "*")
            {
                passesFilter = passesFilter && numInfo.country_code == filter.Country;
            }

            // Filter on Carrier if applicable
            if (String.IsNullOrWhiteSpace(filter.Carrier) == false && filter.Carrier != "*")
            {
                passesFilter = passesFilter && numInfo.current_carrier.network_code == filter.Carrier;
            }

            if (passesFilter)
            {
                var response = await SendMessage(cleanNum, calculateSignature(cleanNum));

                return(new ObjectResult(new
                {
                    Status = "ok",
                    NumberResponse = numInfo,
                    MessageResponse = response
                }));
            }
            else
            {
                return(new ObjectResult(new
                {
                    Status = "err",
                    Message = "number failed test parameters"
                })
                {
                    StatusCode = 400
                });
            }
        }
        public void should_send_basic_ni_request()
        {
            var result = NumberInsight.RequestBasic(new NumberInsight.NumberInsightBasicRequest
            {
                number = Configuration.Instance.Settings["test_number"]
            });

            Assert.AreEqual("0", result.status);
            Assert.AreEqual(Configuration.Instance.Settings["test_number"], result.international_format_number);
            Assert.AreEqual("(555) 555-1212", result.national_format_number);
        }
Example #6
0
        public void should_send_basic_ni_request()
        {
            var result = NumberInsight.RequestBasic(new NumberInsight.NumberInsightBasicRequest
            {
                number = "15555551212"
            });

            Assert.AreEqual("0", result.status);
            Assert.AreEqual("15555551212", result.international_format_number);
            Assert.AreEqual("(555) 555-1212", result.national_format_number);
        }
        public void should_send_standard_ni_request()
        {
            var result = NumberInsight.RequestStandard(new NumberInsight.NumberInsightBasicRequest()
            {
                number = Configuration.Instance.Settings["test_number"]
            });

            Assert.AreEqual("0", result.status);
            Assert.AreEqual(Configuration.Instance.Settings["test_number"], result.international_format_number);
            Assert.AreEqual("(555) 555-1212", result.national_format_number);
            Assert.AreEqual("Verizon Wireless", result.current_carrier.name);
        }
        public void should_send_standard_ni_request()
        {
            var result = NumberInsight.RequestStandard(new NumberInsight.NumberInsightRequest
            {
                Number = Configuration.Instance.Settings["test_number"]
            });

            Assert.AreEqual("0", result.Status);
            Assert.AreEqual(Configuration.Instance.Settings["test_number"], result.InternationalFormatNumber);
            Assert.AreEqual("(555) 555-1212", result.NationalFormatNumber);
            Assert.AreEqual("Verizon Wireless", result.CurrentCarrier.Name);
        }
Example #9
0
        public void should_send_basic_ni_request()
        {
            SetExpect($"{ApiUrl}/ni/basic/json",
                      "{\"status\": 0,\"status_message\": \"Success\",\"request_id\": \"ca4f82b6-73aa-43fe-8c52-874fd9ffffff\",\"international_format_number\": \"15555551212\",\"national_format_number\": \"(555) 555-1212\",\"country_code\": \"US\",\"country_code_iso3\": \"USA\",\"country_name\": \"United States of America\",\"country_prefix\": \"1\"}",
                      $"number=15555551212&api_key={ApiKey}&api_secret={ApiSecret}&");

            var result = NumberInsight.RequestBasic(new NumberInsight.NumberInsightRequest
            {
                number = "15555551212"
            });

            Assert.AreEqual("0", result.status);
            Assert.AreEqual("15555551212", result.international_format_number);
            Assert.AreEqual("(555) 555-1212", result.national_format_number);
        }
Example #10
0
        public void should_send_standard_ni_request()
        {
            SetExpect($"{ApiUrl}/ni/standard/json",
                      "{\"status\": 0,\"status_message\": \"Success\",\"request_id\": \"bcf255a4-047c-4364-89b1-d5cf76ffffff\",\"international_format_number\": \"15555551212\",\"national_format_number\": \"(555) 555-1212\",\"country_code\": \"US\",\"country_code_iso3\": \"USA\",\"country_name\": \"United States of America\",\"country_prefix\": \"1\",\"request_price\": \"0.00500000\",\"remaining_balance\": \"1.1\",\"current_carrier\": {\"network_code\": \"310004\",\"name\": \"Verizon Wireless\",\"country\": \"US\",\"network_type\": \"mobile\"},\"original_carrier\": {\"network_code\": \"310004\",\"name\": \"Verizon Wireless\",\"country\": \"US\",\"network_type\": \"mobile\"}}",
                      $"number=15555551212&api_key={ApiKey}&api_secret={ApiSecret}&");

            var result = NumberInsight.RequestStandard(new NumberInsight.NumberInsightRequest
            {
                number = "15555551212"
            });

            Assert.AreEqual("0", result.status);
            Assert.AreEqual("15555551212", result.international_format_number);
            Assert.AreEqual("(555) 555-1212", result.national_format_number);
            Assert.AreEqual("Verizon Wireless", result.current_carrier.name);
        }
        public ActionResult Basic(string number)
        {
            var results = NumberInsight.RequestBasic(new NumberInsight.NumberInsightBasicRequest
            {
                number = number,
            });

            Session["requestID"]   = results.request_id;
            Session["iNumber"]     = results.international_format_number;
            Session["nNumber"]     = results.national_format_number;
            Session["status"]      = results.status_message;
            Session["country"]     = results.country_name;
            Session["countryCode"] = results.country_code;

            return(RedirectToAction("BasicResults"));
        }
Example #12
0
        /// <summary>
        /// This is a quick sanity check with 90%+ code coverage of the ApiRequest classes
        /// </summary>
        private static void ApiRequestCoverageTest()
        {
            Console.WriteLine("Account.GetBalance() = {0}", Account.GetBalance());
            Console.WriteLine("Account.GetNumbers() = {0}", Account.GetNumbers().count);

            /////

            var niResp = NumberInsight.Request(new NumberInsight.NumberInsightRequest
            {
                Number   = Configuration.Instance.Settings["test_number"],
                Callback = "https://abcdefg.ngrok.io/ni/"
            });

            Console.WriteLine("NumberInsight.Request() = {0}", niResp.status);

            /////

            var appRequest = new ApplicationRequest
            {
                name       = "coveragetest",
                type       = "voice",
                answer_url = "https://abcdefg.ngrok.io/api/voice",
                event_url  = "https://abcdefg.ngrok.io/api/voice",
            };

            var appResp = Application.Create(appRequest);

            Console.WriteLine("Application.Create() = {0}", appResp.id);

            var appList = Application.List();

            Console.WriteLine("Application.List() = {0}", appList.Count);
            var filteredAppList = Application.List(10, 0, appResp.id);

            Console.WriteLine("Application.List(10, 0, appResp.id) = {0}", filteredAppList.Count);
            appRequest.id   = appResp.id;
            appRequest.name = "updcoveragetest";
            var appUpdateResp = Application.Update(appRequest);

            Console.WriteLine("Application.Update(appRequest) = {0}", appUpdateResp.name);
            var isDeleted = Application.Delete(appUpdateResp.id);

            Console.WriteLine("Application.Delete(id) = {0}", isDeleted);

            /////

            var results = Call.Do(new Call.CallCommand
            {
                to = new[]
                {
                    new Call.Endpoint
                    {
                        type   = "phone",
                        number = Configuration.Instance.Settings["test_number"]
                    }
                },
                @from = new Call.Endpoint
                {
                    type   = "phone",
                    number = Configuration.Instance.Settings["nexmo_number"]
                },
                answer_url = new[]
                {
                    "https://nexmo-community.github.io/ncco-examples/first_call_talk.json"
                }
            });

            Console.WriteLine("Call.Do() = {0}", results.status);
            var callListResults = Call.List();

            Console.WriteLine("Call.List() = {0}", callListResults.count);
        }