internal IRestMethodExecutor Create(RestControllerMethodInfo info) { if (info.HasContentParameter) { return _withContentExecutor; } else { return _withoutContentExecutor; } }
protected override object ExecuteAnonymousMethod(RestControllerMethodInfo info, RestServerRequest request, ParsedUri requestUri) { var instantiator = InstanceCreatorCache.Default.GetCreator(info.MethodInfo.DeclaringType); object[] parameters; try { parameters = info.GetParametersFromUri(requestUri).ToArray(); } catch (FormatException) { return _responseFactory.CreateBadRequest(); } return info.MethodInfo.Invoke( instantiator.Create(info.MethodInfo.DeclaringType, info.ControllerConstructorArgs()), parameters); }
protected override object ExecuteAnonymousMethod(RestControllerMethodInfo info, RestServerRequest request, ParsedUri requestUri) { var instantiator = InstanceCreatorCache.Default.GetCreator(info.MethodInfo.DeclaringType); object contentObj = null; try { if (request.HttpServerRequest.Content != null) { contentObj = _contentSerializer.FromContent( request.ContentEncoding.GetString(request.HttpServerRequest.Content), request.ContentMediaType, info.ContentParameterType); } } catch (JsonReaderException) { return _responseFactory.CreateBadRequest(); } catch (InvalidOperationException) { return _responseFactory.CreateBadRequest(); } object[] parameters = null; try { parameters = info.GetParametersFromUri(requestUri).Concat(new[] { contentObj }).ToArray(); } catch (FormatException) { return _responseFactory.CreateBadRequest(); } return info.MethodInfo.Invoke( instantiator.Create(info.MethodInfo.DeclaringType, info.ControllerConstructorArgs()), parameters); }