internal object InvokeMethod(RequestParameters parameter) { _requestedMethod.ThrowIfNull("RequestedMethod"); parameter.ThrowIfNull("parameter"); return _requestedMethod.Invoke(_BusinessInstance, parameter.ToArray()); }
private Task<HttpResponseMessage> Invoke(BusinessControllerBase controller, RequestParameters parameter, HttpRequestMessage request) { controller.ThrowIfNull("controller"); parameter.ThrowIfNull("parameter"); return Task.Factory.StartNew<HttpResponseMessage>(() => { //TODO: read content type from the given model's attribute. ResponseMessageContext context = ResponseMessageContext.GetContext(controller, parameter, request); try { object result = controller.InvokeMethod(parameter); context.Content = new JsonContent(result); // TODO: HttpContent's should be get from the factory. context.StatusCode = HttpStatusCode.OK; } catch (Exception ex) { context.Content = new JsonContent(new { Error = ex.Message }); context.StatusCode = HttpStatusCode.InternalServerError; } HttpResponseMessage response = new HttpResponseMessage { Content = context.Content, RequestMessage = request, StatusCode = context.StatusCode }; return response; }); }