Exemplo n.º 1
0
        /// <summary>
        /// Visits list of <see cref="OpenApiDocument"/> and child objects
        /// </summary>
        /// <param name="doc">OpenApiDocument to be walked</param>
        public void Walk(OpenApiDocument doc)
        {
            _visitor.Visit(doc);

            Walk(doc.Info);
            Walk(doc.Servers);
            Walk(doc.Paths);
            Walk(doc.Components);
            Walk(doc.ExternalDocs);
            Walk(doc.Tags);
            Walk(doc as IOpenApiExtensible);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Visits list of <see cref="OpenApiDocument"/> and child objects
        /// </summary>
        /// <param name="doc">OpenApiDocument to be walked</param>
        public void Walk(OpenApiDocument doc)
        {
            if (doc == null)
            {
                return;
            }

            _visitor.Visit(doc);

            Walk(OpenApiConstants.Info, () => Walk(doc.Info));
            Walk(OpenApiConstants.Servers, () => Walk(doc.Servers));
            Walk(OpenApiConstants.Paths, () => Walk(doc.Paths));
            Walk(OpenApiConstants.Components, () => Walk(doc.Components));
            Walk(OpenApiConstants.ExternalDocs, () => Walk(doc.ExternalDocs));
            Walk(OpenApiConstants.Tags, () => Walk(doc.Tags));
            Walk(doc as IOpenApiExtensible);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Visits list of <see cref="OpenApiDocument"/> and child objects
        /// </summary>
        /// <param name="doc">OpenApiDocument to be walked</param>
        public void Walk(OpenApiDocument doc)
        {
            if (doc == null)
            {
                return;
            }

            _schemaLoop.Clear();
            _pathItemLoop.Clear();

            _visitor.Visit(doc);

            Walk(OpenApiConstants.Info, () => Walk(doc.Info));
            Walk(OpenApiConstants.Servers, () => Walk(doc.Servers));
            Walk(OpenApiConstants.Paths, () => Walk(doc.Paths));
            Walk(OpenApiConstants.Components, () => Walk(doc.Components));
            Walk(OpenApiConstants.Security, () => Walk(doc.SecurityRequirements));
            Walk(OpenApiConstants.ExternalDocs, () => Walk(doc.ExternalDocs));
            Walk(OpenApiConstants.Tags, () => Walk(doc.Tags));
            Walk(doc as IOpenApiExtensible);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Walks through the <see cref="OpenApiDocument"/> and validates each element.
        /// </summary>
        /// <param name="doc"></param>
        public void Walk(OpenApiDocument doc)
        {
            _visitor.Visit(doc);
            _visitor.Visit(doc.Info);
            _visitor.Visit(doc.Servers);

            if (doc.Servers != null)
            {
                foreach (var server in doc.Servers)
                {
                    _visitor.Visit(server);
                    foreach (var variable in server.Variables.Values)
                    {
                        _visitor.Visit(variable);
                    }
                }
            }

            _visitor.Visit(doc.Paths);
            foreach (var pathItem in doc.Paths.Values)
            {
                _visitor.Visit(pathItem);
                _visitor.Visit(pathItem.Operations);
                foreach (var operation in pathItem.Operations.Values)
                {
                    _visitor.Visit(operation);
                    if (operation.Parameters != null)
                    {
                        _visitor.Visit(operation.Parameters);
                        foreach (var parameter in operation.Parameters)
                        {
                            _visitor.Visit(parameter);
                        }
                    }

                    if (operation.RequestBody != null)
                    {
                        _visitor.Visit(operation.RequestBody);

                        if (operation.RequestBody.Content != null)
                        {
                            WalkContent(operation.RequestBody.Content);
                        }
                    }

                    if (operation.Responses != null)
                    {
                        _visitor.Visit(operation.Responses);

                        foreach (var response in operation.Responses.Values)
                        {
                            _visitor.Visit(response);
                            WalkContent(response.Content);

                            if (response.Links != null)
                            {
                                _visitor.Visit(response.Links);
                                foreach (var link in response.Links.Values)
                                {
                                    _visitor.Visit(link);
                                }
                            }
                        }
                    }
                }
            }
        }