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); } } }