Пример #1
0
        public static WorkflowHttpResponse Created(string locationUrl)
        {
            var response = new WorkflowHttpResponse(HttpStatusCode.Created);

            response.Headers.Add(HttpResponseHeader.Location, locationUrl);
            return(response);
        }
Пример #2
0
        public static WorkflowHttpResponse Forbidden(Exception e)
        {
            var response = new WorkflowHttpResponse(HttpStatusCode.Forbidden);

            response.Write(e.Message);
            return(response);
        }
Пример #3
0
        public static WorkflowHttpResponse InternalServerError(Exception e)
        {
            var response = new WorkflowHttpResponse(HttpStatusCode.InternalServerError);

            response.Write(e.ToString());
            return(response);
        }
Пример #4
0
        private WorkflowHttpResponse DeleteWorkItem(string path, string id)
        {
            if (!_workflow.ExistsWorkItem(id))
            {
                return(WorkflowHttpResponse.NotFound);
            }

            var wi = _workflow.GetWorkItem(id);

            if (wi.Path != path)
            {
                return(WorkflowHttpResponse.NotFound);
            }

            try
            {
                _workflow.DeleteWorkItem(id);
            }
            catch (Exception e)
            {
                return(WorkflowHttpResponse.Forbidden(e));
            }

            return(WorkflowHttpResponse.Ok);
        }
Пример #5
0
        public static WorkflowHttpResponse BadRequest(Exception e)
        {
            var response = new WorkflowHttpResponse(HttpStatusCode.BadRequest);

            response.Write(e.ToString());
            return(response);
        }
Пример #6
0
        public void VisitWorkItem(WorkItemNode workItemNode)
        {
            if (!_workflow.ExistsWorkStep(_path))
            {
                Response = WorkflowHttpResponse.NotFound;
            }

            TryOperation(
                () =>
            {
                HandleWorkItem(workItemNode);
            }
                );
        }
Пример #7
0
        private void HandleWorkItem(WorkItemNode workItemNode)
        {
            var workItem = workItemNode.GetWorkItem(_path);

            if (!_workflow.ExistsWorkItem(workItem.Id))
            {
                _workflow.CreateWorkItem(workItem);
                Response = WorkflowHttpResponse.Created(workItem.Path);
            }
            else
            {
                _workflow.UpdateWorkItem(workItem);
                Response = WorkflowHttpResponse.Ok;
            }
        }
Пример #8
0
        private static WorkflowHttpResponse Render(IWorkStepRenderer renderer, string path)
        {
            try
            {
                var response = WorkflowHttpResponse.Ok;
                response.Headers.Add(HttpRequestHeader.ContentType, renderer.ContentType);
                renderer.Render(response.OutputStream, path);

                return(response);
            }
            catch (Exception e)
            {
                return(WorkflowHttpResponse.InternalServerError(e));
            }
        }
Пример #9
0
        public void VisitWorkStep(WorkStepNode workStepNode)
        {
            if (_path != WorkStep.Root.Path && !_workflow.ExistsWorkStep(_path))
            {
                Response = WorkflowHttpResponse.NotFound;
            }


            TryOperation(
                () =>
            {
                WorkStep workStep = workStepNode.GetWorkStep(_path);
                _workflow.CreateWorkStep(workStep);
                Response = WorkflowHttpResponse.Created(workStep.Path);
            }
                );
        }
Пример #10
0
 private void TryOperation(Action action)
 {
     try
     {
         action.Invoke();
     }
     catch (ArgumentException e)
     {
         Response = WorkflowHttpResponse.BadRequest(e);
     }
     catch (InvalidOperationException e)
     {
         Response = WorkflowHttpResponse.Forbidden(e);
     }
     catch (Exception e)
     {
         Response = WorkflowHttpResponse.InternalServerError(e);
     }
 }
Пример #11
0
        private WorkflowHttpResponse RespondToPost(WorkflowHttpRequest request)
        {
            IRequestMessageParser parser;

            if (!RequestMessageParserFactory.TryCreateParser(request.ContentType, out parser))
            {
                return(WorkflowHttpResponse.UnsupportedMediaType);
            }

            var visitor = new HttpPostWorkflowNodeVisitor(_workflow, request.RawUrl);

            try
            {
                parser.Parse(request.InputStream).AcceptVisitor(visitor);
            }
            catch (ArgumentException e)
            {
                return(WorkflowHttpResponse.BadRequest(e));
            }

            return(visitor.Response);
        }
 public static WorkflowHttpResponse InternalServerError(Exception e)
 {
     var response = new WorkflowHttpResponse(HttpStatusCode.InternalServerError);
     response.Write(e.ToString());
     return response;
 }
 public static WorkflowHttpResponse Forbidden(Exception e)
 {
     var response = new WorkflowHttpResponse(HttpStatusCode.Forbidden);
     response.Write(e.Message);
     return response;
 }
 public static WorkflowHttpResponse Created(string locationUrl)
 {
     var response = new WorkflowHttpResponse(HttpStatusCode.Created);
     response.Headers.Add(HttpResponseHeader.Location, locationUrl);
     return response;
 }
 public static WorkflowHttpResponse BadRequest(Exception e)
 {
     var response = new WorkflowHttpResponse(HttpStatusCode.BadRequest);
     response.Write(e.ToString());
     return response;
 }
Пример #16
0
 private static void CopyResponse(WorkflowHttpResponse fromResponse, HttpListenerResponse response)
 {
     response.StatusCode = (int) fromResponse.HttpStatusCode;
     CopyHeaders(fromResponse.Headers, response.Headers);
     fromResponse.CopyOutputStreamTo(response.OutputStream);
 }