示例#1
0
        public IEnumerable <ControllerMethod> GetMethods(Parser.Model.EndPoint endpoint, string url, ControllerObject parent, string objectName,
                                                         IDictionary <string, Parameter> parentUriParameters, string modelsNamespace)
        {
            var methodsNames = new List <string>();

            if (parent != null && parent.Methods != null)
            {
                methodsNames = parent.Methods.Select(m => m.Name).ToList();
            }

            var generatorMethods = new Collection <ControllerMethod>();

            if (endpoint.Operations == null)
            {
                return(generatorMethods);
            }

            foreach (var method in endpoint.Operations)
            {
                var generatedMethod = BuildControllerMethod(url, method, endpoint, parent, parentUriParameters, modelsNamespace);

                if (IsVerbForMethod(method))
                {
                    if (methodsNames.Contains(generatedMethod.Name))
                    {
                        generatedMethod.Name = GetUniqueName(methodsNames, generatedMethod.Name, GetRelativePath(endpoint.Path, parent.PrefixUri));
                    }

                    if (method.Request != null && method.Request.QueryParameters != null && method.Request.QueryParameters.Any())
                    {
                        var queryParameters = queryParametersParser.ParseParameters(method);
                        generatedMethod.QueryParameters = queryParameters;
                    }

                    generatorMethods.Add(generatedMethod);
                    methodsNames.Add(generatedMethod.Name);
                }
            }

            return(generatorMethods);
        }