private void DoPost(HttpRequest httpRequest, HttpResponse httpResponse) { Dictionary<string, Stream> files = httpRequest.Files.AllKeys.ToDictionary(n => n, n => httpRequest.Files[n].InputStream); DirectRequest[] requests = new DirectRequestsBuilder().Build(new StreamReader(httpRequest.InputStream, httpRequest.ContentEncoding), httpRequest.Form, files); var responses = new DirectResponse[requests.Length]; for(int i = 0; i < requests.Length; i++) { responses[i] = new DirectHandler(_objectFactory, _metadata).Handle(requests[i]); } using(var textWriter = new StreamWriter(httpResponse.OutputStream, httpResponse.ContentEncoding)) { if(requests[0].Upload) { httpResponse.ContentType = "text/html"; textWriter.Write("<html><body><textarea>"); SerializeResponse(responses, textWriter); textWriter.Write("</textarea></body></html>"); } else { httpResponse.ContentType = "application/json"; SerializeResponse(responses, textWriter); } } }
private void DoPost(HttpRequest httpRequest, HttpResponse httpResponse) { Dictionary <string, Stream> files = httpRequest.Files.AllKeys.ToDictionary(n => n, n => httpRequest.Files[n].InputStream); DirectRequest[] requests = new DirectRequestsBuilder().Build(new StreamReader(httpRequest.InputStream, httpRequest.ContentEncoding), httpRequest.Form, files); var responses = new DirectResponse[requests.Length]; for (int i = 0; i < requests.Length; i++) { responses[i] = new DirectHandler(_metadata, _directHandlerInterceptor).Handle(requests[i]); } using (var textWriter = new StreamWriter(httpResponse.OutputStream, httpResponse.ContentEncoding)) { if (requests[0].Upload) { httpResponse.ContentType = "text/html"; textWriter.Write("<html><body><textarea>"); SerializeResponse(responses, textWriter); textWriter.Write("</textarea></body></html>"); } else { httpResponse.ContentType = "application/json"; SerializeResponse(responses, textWriter); } } }
private void DoPost(HttpRequest httpRequest, HttpResponse httpResponse) { var directRequestsBuilder = new DirectRequestsBuilder(); DirectRequest[] requests = httpRequest.Form.Count > 0 ? directRequestsBuilder.BuildFromFormData(httpRequest.Form) : directRequestsBuilder.BuildFromRequestData(new StreamReader(httpRequest.InputStream, httpRequest.ContentEncoding)); var responses = new DirectResponse[requests.Length]; for(int i = 0; i < requests.Length; i++) { responses[i] = new DirectHandler(_objectFactory, _metadata).Handle(requests[i]); } httpResponse.ContentType = "application/json"; using(var jsonWriter = new JsonTextWriter(new StreamWriter(httpResponse.OutputStream, httpResponse.ContentEncoding))) { new JsonSerializer().Serialize(jsonWriter, responses.Length == 1 ? (object)responses[0] : responses); } }
internal DirectResponse Handle(DirectRequest request, JsonSerializer jsonSerializer, object actionInstance) { var response = new DirectResponse(request); MethodInfo methodInfo = _metadata.GetMethodInfo(request.Action, request.Method); object result = null; try { object[] parameters = _parametersParser.Parse(methodInfo.GetParameters(), request.JsonData, request.FormData, jsonSerializer); result = methodInfo.Invoke(actionInstance, parameters); } catch(TargetInvocationException e) { response.SetException(e.InnerException); } catch(Exception e) { response.SetException(e); } response.Result = SerializeResult(result, jsonSerializer); return response; }
internal DirectResponse Handle(DirectRequest request, JsonSerializer jsonSerializer, object actionInstance) { var response = new DirectResponse(request); MethodInfo methodInfo = _metadata.GetMethodInfo(request.Action, request.Method); object result = null; try { object[] parameters = (request.Data.Type == JTokenType.Array ? _parameterValuesParser.ParseByPosition(methodInfo.GetParameters(), (JArray)request.Data, jsonSerializer) : _parameterValuesParser.ParseByName(methodInfo.GetParameters(), (JObject)request.Data, jsonSerializer)); result = methodInfo.Invoke(actionInstance, parameters); } catch(TargetInvocationException e) { response.SetException(e.InnerException); } catch(Exception e) { response.SetException(e); } response.Result = SerializeResult(result, jsonSerializer); return response; }
public DirectResponse Handle(DirectRequest request) { try { Type type = _metadata.GetActionType(request.Action, request.Method); MethodInfo methodInfo = _metadata.GetMethodInfo(request.Action, request.Method); var response = new DirectResponse(request); _directHandlerInterceptor.Invoke(type, methodInfo, delegate(object actionInstance, JsonSerializer jsonSerializer) { response = Handle(request, jsonSerializer, methodInfo, actionInstance, type); }); return response; //JsonSerializer jsonSerializer = _objectFactory.GetJsonSerializer(); //try //{ // object actionInstance = _objectFactory.GetInstance(type); // try // { // return Handle(request, jsonSerializer, methodInfo, actionInstance); // } // finally // { // _objectFactory.Release(actionInstance); // } //} //finally //{ // _objectFactory.Release(jsonSerializer); //} } catch(TargetInvocationException e) { return new DirectResponse(request, e.InnerException); } catch(Exception e) { return new DirectResponse(request, e); } }
public DirectResponse Handle(DirectRequest request) { try { Type type = _metadata.GetActionType(request.Action, request.Method); MethodInfo methodInfo = _metadata.GetMethodInfo(request.Action, request.Method); var response = new DirectResponse(request); _directHandlerInterceptor.Invoke(type, methodInfo, delegate(object actionInstance, JsonSerializer jsonSerializer) { response = Handle(request, jsonSerializer, methodInfo, actionInstance, type); }); return(response); //JsonSerializer jsonSerializer = _objectFactory.GetJsonSerializer(); //try //{ // object actionInstance = _objectFactory.GetInstance(type); // try // { // return Handle(request, jsonSerializer, methodInfo, actionInstance); // } // finally // { // _objectFactory.Release(actionInstance); // } //} //finally //{ // _objectFactory.Release(jsonSerializer); //} } catch (TargetInvocationException e) { return(new DirectResponse(request, e.InnerException)); } catch (Exception e) { return(new DirectResponse(request, e)); } }
private static void SerializeResponse(DirectResponse[] responses, TextWriter textWriter) { new JsonSerializer().Serialize(textWriter, responses.Length == 1 ? (object)responses[0] : responses); }