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);
                    }
                }
            }
        }
        protected virtual void ProcessOperations(Stream responseStream, IHttpRequest httpReq)
        {
            var metadata = EndpointHost.Metadata;            

            var collectionId = Guid.NewGuid().ToString();

            var req =
                GetRequests(httpReq, metadata, collectionId, metadata.Operations)
                    .OrderBy(r => r.Folder)
                    .ThenBy(r => r.Name);
            
            var collection = new PostmanCollection
            {
                Id = collectionId,
                Name = EndpointHost.Config.ServiceName,
                Timestamp = DateTime.UtcNow.ToUnixTimeMs(),
                Requests = req.ToArray(),
                Order = new List<string>(),
                Folders = new List<PostmanFolder>()
            };

            AddToFolders(collection);
            if (SupportFolders && DoNotAllowFolderIfOnlyOneItem)
            {
                MoveOneItemFoldersOneLevelUp(collection);
            }
            
            using (var scope = JsConfig.BeginScope())
            {
                scope.EmitCamelCaseNames = true;
                JsonSerializer.SerializeToStream(collection, responseStream);
            }
        }
 private void MoveOneItemFoldersOneLevelUp(PostmanCollection collection)
 {
     for (int folderIdx = collection.Folders.Count - 1; folderIdx >= 0; folderIdx--)
         //Counting backwards to be able to remove folders
     {
         var folder = collection.Folders[folderIdx];
         if (folder.Order.Count == 1)
         {
             collection.Order.Add(folder.Order[0]);
             collection.Folders.RemoveAt(folderIdx);
         }
     }
 }