Exemplo n.º 1
0
        private async Task <Feedback> ExecuteModifyAsync(IRequestReader reader, ResponseBuilder response)
        {
            var          method      = (UnsafeMethod)Enum.Parse(typeof(UnsafeMethod), reader.RequestMethod, true);
            ResourceBody requestBody = reader.GetRequestBody();
            Feedback     feedback    = await Endpoint.CommandAsync(method, requestBody);

            response.AddFeedback(feedback);

            return(feedback);
        }
        private IHttpActionResult GetResultFromFeedback(Feedback feedback)
        {
            ResponseBuilder.AddFeedback(feedback);

            object responseBody = Response.GetFullBody();

            if (Response.StatusCode == HttpStatusCode.Created)
            {
                return(Created(Response.Headers["Location"], responseBody));
            }

            if (feedback.Type == FeedbackType.MultiResponse)
            {
                Debug.Assert(Response.StatusCode == (HttpStatusCode)207);
                Debug.Assert(responseBody is object[]);
                return(Content(Response.StatusCode, responseBody as object[])); // for content negotiation. does this even make a difference?
            }

            return(Content(Response.StatusCode, responseBody));
        }