private void SetResponseDescription(ApiDescription apiDescription, DynamicHttpActionDescriptor actionDescriptor) { var responseDescription = CreateResponseDescription(actionDescriptor); var prop2 = typeof(ApiDescription).GetProperties().Single(p => p.Name == "ResponseDescription"); prop2.SetValue(apiDescription, responseDescription); }
private Collection <ApiDescription> InitializeApiDescriptions() { var apiDescriptions = new Collection <ApiDescription>(); foreach (var item in base.ApiDescriptions) { apiDescriptions.Add(item); } var dynamicApiControllerInfos = _dynamicApiControllerManager.GetAll(); foreach (var dynamicApiControllerInfo in dynamicApiControllerInfos) { if (IsApiExplorerDisabled(dynamicApiControllerInfo)) { continue; } foreach (var dynamicApiActionInfo in dynamicApiControllerInfo.Actions.Values) { if (IsApiExplorerDisabled(dynamicApiActionInfo)) { continue; } var apiDescription = new ApiDescription(); var controllerDescriptor = new DynamicHttpControllerDescriptor(_abpWebApiConfiguration.HttpConfiguration, dynamicApiControllerInfo); controllerDescriptor.ControllerName = controllerDescriptor.ControllerName.Replace("/", "_"); var actionDescriptor = new DynamicHttpActionDescriptor(_abpWebApiConfiguration, controllerDescriptor, dynamicApiActionInfo); apiDescription.ActionDescriptor = actionDescriptor; apiDescription.HttpMethod = actionDescriptor.SupportedHttpMethods[0]; var actionValueBinder = _abpWebApiConfiguration.HttpConfiguration.Services.GetActionValueBinder(); var actionBinding = actionValueBinder.GetBinding(actionDescriptor); apiDescription.ParameterDescriptions.Clear(); foreach (var apiParameterDescription in CreateParameterDescription(actionBinding, actionDescriptor)) { apiDescription.ParameterDescriptions.Add(apiParameterDescription); } SetResponseDescription(apiDescription, actionDescriptor); apiDescription.RelativePath = "api/services/" + dynamicApiControllerInfo.ServiceName + "/" + dynamicApiActionInfo.ActionName; apiDescriptions.Add(apiDescription); } } return(apiDescriptions); }
private Collection <ApiDescription> InitializeApiDescriptions() { Collection <ApiDescription> apiDescriptions = new Collection <ApiDescription>(); //webapi foreach (var item in base.ApiDescriptions) { apiDescriptions.Add(item); } //dynamic api var dynamicapiinfos = DynamicApiControllerManager.GetAll(); foreach (var dynamicapiinfo in dynamicapiinfos) { foreach (var item in dynamicapiinfo.Actions) { ApiDescription api = new ApiDescription(); var httpaction = new HttpControllerDescriptor(); httpaction.Configuration = _config; httpaction.ControllerType = dynamicapiinfo.ServiceInterfaceType; httpaction.ControllerName = dynamicapiinfo.ServiceName; var action = new DynamicHttpActionDescriptor(_abpWebApiConfiguration, httpaction, item.Value); api.ActionDescriptor = action; api.HttpMethod = GetMethod(item.Value.Verb); IActionValueBinder actionValueBinder = _config.Services.GetActionValueBinder(); HttpActionBinding actionBinding = actionValueBinder.GetBinding(action); //parameter IList <ApiParameterDescription> parameterDescriptions = CreateParameterDescription(actionBinding, action); //using refletions to internal set var prop = typeof(ApiDescription).GetProperties().Where(p => p.Name == "ParameterDescriptions").SingleOrDefault(); prop.SetValue(api, new Collection <ApiParameterDescription>(parameterDescriptions)); //resopnse ResponseDescription responseDescription = CreateResponseDescription(action); var prop2 = typeof(ApiDescription).GetProperties().Where(p => p.Name == "ResponseDescription").SingleOrDefault(); prop2.SetValue(api, responseDescription); api.RelativePath = "api/services/" + dynamicapiinfo.ServiceName + "/" + item.Value.ActionName; apiDescriptions.Add(api); } } return(apiDescriptions); }