public IList Apply()

in src/Microsoft.OpenApi.CSharpAnnotations.DocumentGeneration/DocumentFilters/SecurityToSecurityRequirementDocumentFilter.cs [32:97]


        public IList<GenerationError> Apply(
            OpenApiDocument openApiDocument,
            IList<XDocument> xmlDocuments,
            DocumentFilterSettings settings,
            OpenApiDocumentGenerationSettings openApiDocumentGenerationSettings)
        {
            var generationErrors = new List<GenerationError>();

            try
            {
                if (openApiDocument == null)
                {
                    throw new ArgumentNullException(nameof(openApiDocument));
                }

                if (settings == null)
                {
                    throw new ArgumentNullException(nameof(settings));
                }

                if (xmlDocuments == null)
                {
                    throw new ArgumentNullException(nameof(xmlDocuments));
                }

                var securityElements = new List<XElement>();

                foreach (var xmlDocument in xmlDocuments)
                {
                    securityElements.AddRange(xmlDocument.XPathSelectElements("//doc/members/member")
                        .Where(
                            m => m.Attribute(KnownXmlStrings.Name) != null &&
                                 m.Attribute(KnownXmlStrings.Name).Value.StartsWith("T:"))
                        .Elements()
                        .Where(p => p.Name == KnownXmlStrings.Security));
                }

                if (!securityElements.Any())
                {
                    return generationErrors;
                }

                var openApiSecurityRequirement = new OpenApiSecurityRequirement();
                var securitySchemeRegistry = settings.ReferenceRegistryManager.SecuritySchemeReferenceRegistry;

                foreach (var securityElement in securityElements)
                {
                    var securityScheme = securitySchemeRegistry.FindOrAddReference(securityElement);

                    openApiSecurityRequirement.Add(securityScheme, securitySchemeRegistry.Scopes);
                }

                openApiDocument.SecurityRequirements.Add(openApiSecurityRequirement);
            }
            catch(Exception ex)
            {
                generationErrors.Add(
                   new GenerationError
                   {
                       Message = ex.Message,
                       ExceptionType = ex.GetType().Name
                   });
            }

            return generationErrors;
        }