static async Task HandleRequest(HttpListenerRequest request, HttpListenerResponse response) { switch (request.HttpMethod) { case "GET": var registeredFrom = request.GetDateTimeParam("registeredFrom"); var registeredTo = request.GetDateTimeParam("registeredTo"); var users = registeredFrom == null? Controller.GetUsers() : Controller.GetUsers(u => u.CreatedAt >= registeredFrom); await response.WriteAsync(users, 200); break; case "POST": var info = await request.ReadAsync <LoginInfo>(); var result = Controller.CreateUser(info); if (result.HasErrors) { await response.WriteAsync(result.Errors, 400); } else { await response.WriteAsync(result.User.Id, 201); } break; case "DELETE": var login = await request.ReadAsync <string>(); response.StatusCode = (Controller.DeleteUser(login) ? 204 : 404); break; } }