Ejemplo n.º 1
0
        private async Task <IActionResult> SendMessage(string num, string code)
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("https://mn.stabilitasventures.net");
                var payload = BeaconJsonConvert.SerializeObject(new
                {
                    To     = num,
                    Msg    = calculateSignature(num).ToLowerInvariant(),
                    Intent = "two-way",
                    Nid    = $"TEST:{code.ToLowerInvariant()}",
                    Uid    = $"TEST:{code.ToLowerInvariant()}",
                });
                var response = await client.PostAsync("/router/sms", new StringContent(payload, Encoding.UTF8, "application/json"));

                if (response.IsSuccessStatusCode)
                {
                    return(new ObjectResult(response));
                }
                else
                {
                    return(new ObjectResult(response)
                    {
                        StatusCode = 400
                    });
                }
            }
        }
Ejemplo n.º 2
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
                });
            }
        }