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 }); } } }
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 }); } }