private OpenApiUrlSpaceNode Attach(IEnumerable <string> segments, OpenApiPathItem pathItem, string layer) { var segment = segments.FirstOrDefault(); if (string.IsNullOrEmpty(segment)) { if (PathItem == null) { PathItem = pathItem; Layer = layer; } return(this); } // If the child segment has already been defined, then insert into it if (Children.ContainsKey(segment)) { return(Children[segment].Attach(segments.Skip(1), pathItem, layer)); } else { var node = new OpenApiUrlSpaceNode(segment); Children[segment] = node; return(node.Attach(segments.Skip(1), pathItem, layer)); } }
public static OpenApiUrlSpaceNode Create(OpenApiDocument doc, string layer) { OpenApiUrlSpaceNode root = null; var paths = doc?.Paths; if (paths != null) { root = new OpenApiUrlSpaceNode(""); foreach (var path in paths) { root.Attach(path.Key, path.Value, layer); } } return(root); }