Exemplo n.º 1
0
        public void ProcessRequest(HttpContext context)
        {
            HttpRequest     Request  = context.Request;
            HttpResponse    Response = context.Response;
            BroadcastClient client   = null;
            BroadcastInput  input    = null;
            Error           error    = null;

            if (Request.Url.AbsolutePath.EndsWith("/broadcast/register"))
            {
                client = ReadBodyAsBroadcastClient(Request);
                if (client == null || string.IsNullOrEmpty(client.User) || string.IsNullOrWhiteSpace(client.User))
                {
                    Response.StatusCode  = 400;
                    Response.ContentType = "application/json";
                    error            = new Error();
                    error.ID         = NewID;
                    error.TID        = ThreadID;
                    error.PID        = ProcessID;
                    error.Message    = "The User is missing.";
                    error.StatusCode = 400;
                    error.TimeStamp  = DateTime.UtcNow;
                    Response.Write(JsonConvert.SerializeObject(error));
                    context.ApplicationInstance.CompleteRequest();
                    return;
                }

                string guid = BroadcastClient.Register(client.User).ToString();
                Response.StatusCode  = 201;
                Response.ContentType = "application/json";
                Response.Write("{\"Result\":{\"ID\":\"" + guid + "\"}}");
                context.ApplicationInstance.CompleteRequest();
                return;
            }
            else if (Request.Url.AbsolutePath.EndsWith("/broadcast/broadcast"))
            {
                input = ReadBodyAsBroadcastInput(Request);
                if (input == null || input.Change == null)
                {
                    Response.StatusCode  = 400;
                    Response.ContentType = "application/json";
                    error            = new Error();
                    error.ID         = NewID;
                    error.TID        = ThreadID;
                    error.PID        = ProcessID;
                    error.Message    = "Invalid request body.";
                    error.StatusCode = 400;
                    error.TimeStamp  = DateTime.UtcNow;
                    Response.Write(JsonConvert.SerializeObject(error));
                    context.ApplicationInstance.CompleteRequest();
                    return;
                }

                BroadcastClient.Broadcast(input.ID, input.Change);
                Response.StatusCode  = 202;
                Response.ContentType = "application/json";
                context.ApplicationInstance.CompleteRequest();
                return;
            }
            else if (Request.Url.AbsolutePath.EndsWith("/broadcast/changes"))
            {
                input = ReadBodyAsBroadcastInput(Request);
                if (input == null)
                {
                    Response.StatusCode  = 400;
                    Response.ContentType = "application/json";
                    error            = new Error();
                    error.ID         = NewID;
                    error.TID        = ThreadID;
                    error.PID        = ProcessID;
                    error.Message    = "Invalid request body.";
                    error.StatusCode = 400;
                    error.TimeStamp  = DateTime.UtcNow;
                    Response.Write(JsonConvert.SerializeObject(error));
                    context.ApplicationInstance.CompleteRequest();
                    return;
                }

                string changes = "{\"Result\":" + JsonConvert.SerializeObject(BroadcastClient.GetChanges(input.ID)) + "}";
                Response.StatusCode  = 200;
                Response.ContentType = "application/json";
                Response.Write(changes);
                context.ApplicationInstance.CompleteRequest();
                return;
            }
            else if (Request.Url.AbsolutePath.EndsWith("/broadcast/deregister"))
            {
                input = ReadBodyAsBroadcastInput(Request);
                if (input == null)
                {
                    Response.StatusCode = 400;
                    error            = new Error();
                    error.ID         = NewID;
                    error.TID        = ThreadID;
                    error.PID        = ProcessID;
                    error.Message    = "Invalid request body.";
                    error.StatusCode = 400;
                    error.TimeStamp  = DateTime.UtcNow;
                    Response.Write(JsonConvert.SerializeObject(error));
                    context.ApplicationInstance.CompleteRequest();
                    return;
                }

                BroadcastClient.Deregister(input.ID);
                Response.StatusCode  = 200;
                Response.ContentType = "application/json";
                context.ApplicationInstance.CompleteRequest();
                return;
            }



            Response.StatusCode  = 404;
            Response.ContentType = "application/json";
            error            = new Error();
            error.ID         = NewID;
            error.TID        = ThreadID;
            error.PID        = ProcessID;
            error.Message    = "Resource not found";
            error.StatusCode = 404;
            error.TimeStamp  = DateTime.UtcNow;
            Response.Write(JsonConvert.SerializeObject(error));
            context.ApplicationInstance.CompleteRequest();
            return;
        }