PostmanFolder GetApiControllerDescription(IGrouping <Type, ApiDescription> apiDescriptionsByControllerGroup, PostmanCollection postManCollection)
        {
            var controllerName = apiDescriptionsByControllerGroup.Key.Name.Replace("Controller", string.Empty);

            var postManFolder = new PostmanFolder
            {
                Id             = Guid.NewGuid(),
                CollectionId   = postManCollection.Id,
                Name           = controllerName,
                Description    = string.Format("Api Methods for {0}", controllerName),
                CollectionName = "api",
                Order          = new Collection <Guid>()
            };

            var apiDescriptions = apiDescriptionsByControllerGroup
                                  .OrderBy(description => description.HttpMethod, new HttpMethodComparator())
                                  .ThenBy(description => description.RelativePath)
                                  .ThenBy(description => description.Documentation == null ? string.Empty : description.Documentation.ToString(CultureInfo.InvariantCulture));

            foreach (var apiDescription in apiDescriptions)
            {
                var request = GetApiActionDescription(apiDescription, postManCollection);
                request.Time         = postManCollection.Timestamp;
                request.CollectionId = postManCollection.Id;

                postManFolder.Order.Add(request.Id); // add to the folder
                postManCollection.Requests.Add(request);
            }
            return(postManFolder);
        }
        private void AddToFolders(PostmanCollection collection)
        {
            if (!collection.Requests.Any())
            {
                return;
            }

            foreach (var request in collection.Requests)
            {
                if (!SupportFolders || string.IsNullOrEmpty(request.Folder))
                {
                    collection.Order.Add(request.Id);
                }
                else
                {
                    var folder = collection.Folders.FirstOrDefault(f => f.Name.Equals(request.Folder));
                    if (folder == null)
                    {
                        folder = new PostmanFolder
                        {
                            CollectionId   = collection.Id,
                            CollectionName = collection.Name,
                            Id             = Guid.NewGuid().ToString(),
                            Name           = request.Folder,
                            Order          = new List <string> {
                                request.Id
                            }
                        };
                        collection.Folders.Add(folder);
                    }
                    else
                    {
                        folder.Order.Add(request.Id);
                    }
                }
            }
        }