Exemplo n.º 1
0
        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;
            }
        }