Exemple #1
0
        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
        });
    }