private void AddApiDescriptionToModel(ApiDescription apiDescription, ApplicationApiDescriptionModel model) { var moduleModel = model.GetOrAddModule(GetModuleName(apiDescription)); var controllerModel = moduleModel.GetOrAddController(apiDescription.GroupName.RemovePostFix(ApplicationService.CommonPostfixes)); var method = apiDescription.ActionDescriptor.GetMethodInfo(); if (controllerModel.Actions.ContainsKey(method.Name)) { Logger.Warn($"Controller '{controllerModel.Name}' contains more than one action with name '{method.Name}' for module '{moduleModel.Name}'. Ignored: " + apiDescription.ActionDescriptor.GetMethodInfo()); return; } var returnValue = new ReturnValueApiDescriptionModel(method.ReturnType); var actionModel = controllerModel.AddAction(new ActionApiDescriptionModel( method.Name, returnValue, apiDescription.RelativePath, apiDescription.HttpMethod )); AddParameterDescriptionsToModel(actionModel, method, apiDescription); }
public static ActionApiDescriptionModel Create([NotNull] string uniqueName, [NotNull] MethodInfo method, [NotNull] string url, [CanBeNull] string httpMethod, [NotNull] IList <string> supportedVersions, bool?allowAnonymous = null, string implementFrom = null) { Check.NotNull(uniqueName, nameof(uniqueName)); Check.NotNull(method, nameof(method)); Check.NotNull(url, nameof(url)); Check.NotNull(supportedVersions, nameof(supportedVersions)); return(new ActionApiDescriptionModel { UniqueName = uniqueName, Name = method.Name, Url = url, HttpMethod = httpMethod, ReturnValue = ReturnValueApiDescriptionModel.Create(method.ReturnType), Parameters = new List <ParameterApiDescriptionModel>(), ParametersOnMethod = method .GetParameters() .Select(MethodParameterApiDescriptionModel.Create) .ToList(), SupportedVersions = supportedVersions, AllowAnonymous = allowAnonymous, ImplementFrom = implementFrom }); }