private static EndpointMetadata ReadOperations(string path, IDictionary <OperationType, OpenApiOperation> operations)
        {
            EndpointMetadata endpointMetadata = new EndpointMetadata(path);

            if (operations is not null)
            {
                foreach (KeyValuePair <OperationType, OpenApiOperation> operation in operations)
                {
                    RequestMetadata requestMetadata = new RequestMetadata(operation.Key);

                    foreach (OpenApiParameter parameter in operation.Value.Parameters)
                    {
                        requestMetadata.Parameters.Add(parameter);
                    }

                    if (operation.Value.RequestBody?.Content is not null)
                    {
                        foreach (KeyValuePair <string, OpenApiMediaType> content in operation.Value.RequestBody.Content)
                        {
                            string        contentType = content.Key;
                            bool          isRequired  = operation.Value.RequestBody.Required;
                            OpenApiSchema schema      = content.Value?.Schema;

                            requestMetadata.Content.Add(new RequestContentMetadata(contentType, isRequired, schema));
                        }
                    }

                    endpointMetadata.AvailableRequests.Add(requestMetadata);
                }
            }

            return(endpointMetadata);
        }
        private static DirectoryStructure BuildDirectoryStructure(IList <EndpointMetadata> metadata)
        {
            DirectoryStructure d = new DirectoryStructure(null);

            if (metadata is not null)
            {
                for (int index = 0; index < metadata.Count; index++)
                {
                    System.Diagnostics.Debug.WriteLine(index);
                    EndpointMetadata entry = metadata[index];
                    ApiDefinitionReader.FillDirectoryInfo(d, entry);
                }
            }

            return(d);
        }
        private static IList <EndpointMetadata> ReadPaths(OpenApiDocument openApiDocument)
        {
            List <EndpointMetadata> metadata = new List <EndpointMetadata>();

            if (openApiDocument.Paths is not null)
            {
                foreach (KeyValuePair <string, OpenApiPathItem> path in openApiDocument.Paths)
                {
                    string relativeUrl = path.Key;

                    EndpointMetadata endpointMetadata = ReadOperations(relativeUrl, path.Value.Operations);

                    metadata.Add(endpointMetadata);
                }
            }

            return(metadata);
        }
Example #4
0
        public static void FillDirectoryInfo(DirectoryStructure parent, EndpointMetadata entry)
        {
            entry = entry ?? throw new ArgumentNullException(nameof(entry));

            parent = parent ?? throw new ArgumentNullException(nameof(parent));

            string[] parts = entry.Path.Split('/');

            foreach (string part in parts)
            {
                if (!string.IsNullOrEmpty(part) && parent is object)
                {
                    parent = parent.DeclareDirectory(part);
                }
            }

            RequestInfo dirRequestInfo = new RequestInfo();

            foreach (RequestMetadata requestMetadata in entry.AvailableRequests)
            {
                string method = requestMetadata.Operation.ToString();

                foreach (RequestContentMetadata content in requestMetadata.Content)
                {
                    if (string.IsNullOrWhiteSpace(content.ContentType))
                    {
                        dirRequestInfo.SetFallbackRequestBody(method, content.ContentType, SchemaDataGenerator.GetBodyString(content.BodySchema));
                    }

                    dirRequestInfo.SetRequestBody(method, content.ContentType, SchemaDataGenerator.GetBodyString(content.BodySchema));
                }

                dirRequestInfo.AddMethod(requestMetadata.Operation.ToString());
            }

            if (dirRequestInfo.Methods.Count > 0 && parent is object)
            {
                parent.RequestInfo = dirRequestInfo;
            }
        }
Example #5
0
        public static void FillDirectoryInfo(DirectoryStructure parent, EndpointMetadata entry)
        {
            entry = entry ?? throw new ArgumentNullException(nameof(entry));

            parent = parent ?? throw new ArgumentNullException(nameof(parent));

            string[] parts = entry.Path.Split('/');

            foreach (string part in parts)
            {
                if (!string.IsNullOrEmpty(part) && parent is object)
                {
                    parent = parent.DeclareDirectory(part);
                }
            }

            RequestInfo dirRequestInfo = new RequestInfo();

            foreach (KeyValuePair <string, IReadOnlyDictionary <string, IReadOnlyList <Parameter> > > requestInfo in entry.AvailableRequests)
            {
                string method = requestInfo.Key;

                foreach (KeyValuePair <string, IReadOnlyList <Parameter> > parameterSetsByContentType in requestInfo.Value)
                {
                    if (string.IsNullOrEmpty(parameterSetsByContentType.Key))
                    {
                        dirRequestInfo.SetFallbackRequestBody(method, parameterSetsByContentType.Key, SchemaDataGenerator.GetBodyString(parameterSetsByContentType.Value));
                    }

                    dirRequestInfo.SetRequestBody(method, parameterSetsByContentType.Key, SchemaDataGenerator.GetBodyString(parameterSetsByContentType.Value));
                }

                dirRequestInfo.AddMethod(method);
            }

            if (dirRequestInfo.Methods.Count > 0 && parent is object)
            {
                parent.RequestInfo = dirRequestInfo;
            }
        }