public IList Apply()

in src/Microsoft.OpenApi.CSharpAnnotations.DocumentGeneration/PreprocessingOperationFilters/PopulateInAttributeFilter.cs [31:92]


        public IList<GenerationError> Apply(
            OpenApiPaths paths,
            XElement element,
            PreProcessingOperationFilterSettings settings)
        {
            var generationErrors = new List<GenerationError>();

            try
            {
                var paramElementsWithoutIn = element.Elements().Where(
                                    p => p.Name == KnownXmlStrings.Param
                                    && p.Attribute(KnownXmlStrings.In)?.Value == null)
                                .ToList();

                var url = element.Elements()
                    .FirstOrDefault(p => p.Name == KnownXmlStrings.Url)
                    ?.Value;

                if (!string.IsNullOrWhiteSpace(url))
                {
                    foreach (var paramElement in paramElementsWithoutIn)
                    {
                        var paramName = paramElement.Attribute(KnownXmlStrings.Name)?.Value;

                        if (url.Contains(
                                $"/{{{paramName}}}",
                                StringComparison.InvariantCultureIgnoreCase) &&
                            url.Contains(
                                $"={{{paramName}}}",
                                StringComparison.InvariantCultureIgnoreCase))
                        {
                            // The parameter is in both path and query. We cannot determine what to put for "in" attribute.
                            throw new ConflictingPathAndQueryParametersException(paramName, url);
                        }

                        if (url.Contains(
                            $"/{{{paramName}}}",
                            StringComparison.InvariantCultureIgnoreCase))
                        {
                            paramElement.Add(new XAttribute(KnownXmlStrings.In, KnownXmlStrings.Path));
                        }
                        else if (url.Contains(
                            $"={{{paramName}}}",
                            StringComparison.InvariantCultureIgnoreCase))
                        {
                            paramElement.Add(new XAttribute(KnownXmlStrings.In, KnownXmlStrings.Query));
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                generationErrors.Add(
                   new GenerationError
                   {
                       Message = ex.Message,
                       ExceptionType = ex.GetType().Name
                   });
            }

            return generationErrors;
        }