Esempio n. 1
0
        internal object InvokeMethod(RequestParameters parameter)
        {
            _requestedMethod.ThrowIfNull("RequestedMethod");
            parameter.ThrowIfNull("parameter");

            return _requestedMethod.Invoke(_BusinessInstance, parameter.ToArray());
        }
Esempio n. 2
0
        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;
            });
        }