public static async Task <IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, TraceWriter log) { // 1. Instantiate dependencies var clockworkApi = new ClockworkApi(); DomainRepository dnsRepository = null;// new DomainRepository(); // 2. Get the request model var clockworkHook = ClockworkHookRequest.FromQueryString(req.Query); // 3. Decode the DNS Request // The DNS lookup path is in the clockworkHook message var dnsRequest = DnsRequest.FromContent(clockworkHook.Content); try { // 4. Handle the request if (dnsRequest.RequestType == DnsRequestType.Register) { // 4.1 If this is a registration, register the payload against the from number await dnsRepository.Register(dnsRequest.Payload, clockworkHook.From); await clockworkApi.SendMessage(clockworkHook.From, "201"); } else { // 4.2 If this is a lookup, return the number var result = await dnsRepository.Resolve(dnsRequest.Payload); if (result == null) { await clockworkApi.SendMessage(clockworkHook.From, $"404"); } else { await clockworkApi.SendMessage(clockworkHook.From, $"200 {result}"); } } } catch (BadRequestException) { // On bad request, send a 500 to the sender await clockworkApi.SendMessage(clockworkHook.From, "400"); } return(new StatusCodeResult(200)); }