11using System . Collections . Generic ;
22using System . Globalization ;
33using System . Linq ;
4- using Simplify . Web . Meta ;
4+ using Simplify . Web . Controllers . Meta ;
5+ using Simplify . Web . Controllers . Meta . MetaStore ;
6+ using Simplify . Web . Controllers . Meta . Routing ;
7+ using Simplify . Web . Http ;
58using Simplify . Web . Postman . Models ;
69
710namespace Simplify . Web . Postman . Assembly . Collection . PartBuilders ;
@@ -18,60 +21,57 @@ public class CollectionItemsBuilder : ICollectionPartBuilder
1821 /// <param name="model">The model.</param>
1922 public void Build ( CollectionModel model )
2023 {
21- foreach ( var item in ControllersMetaStore . Current . ControllersMetaData )
24+ foreach ( var item in ControllersMetaStore . Current . RoutedControllers )
2225 {
23- // Skip any route controllers
24- if ( item . ExecParameters == null )
25- continue ;
26-
2726 foreach ( var route in item . ExecParameters ! . Routes )
2827 BuildCollectionItems ( model , 0 , BuildRequestCollectionItem ( item , route ) ) ;
2928 }
3029 }
3130
3231 private static void BuildCollectionItems ( CollectionItem currentLevelContainer , int currentLevel , CollectionItem item )
3332 {
34- var path = item . Request . Url . Path ;
35-
36- // If recursion reached request level or reached route parameter
37- if ( currentLevel == path . Count || path [ currentLevel ] . StartsWith ( "{" ) )
33+ while ( true )
3834 {
39- if ( currentLevelContainer . Items == null )
40- currentLevelContainer . Items = new List < CollectionItem > ( ) ;
35+ var path = item . Request . Url . Path ;
4136
42- currentLevelContainer . Items . Add ( item ) ;
43- return ;
44- }
37+ // If recursion reached request level or reached route parameter
38+ if ( currentLevel == path . Count || path [ currentLevel ] . StartsWith ( "{" ) )
39+ {
40+ currentLevelContainer . Items ??= [ ] ;
4541
46- // If path recursion not reached request level
42+ currentLevelContainer . Items . Add ( item ) ;
43+ return ;
44+ }
4745
48- var containerName = BuildContainerName ( path [ currentLevel ] ) ;
46+ // If path recursion not reached request level
4947
50- var container = currentLevelContainer . Items ? . FirstOrDefault ( x => x . Name == containerName ) ;
48+ var containerName = BuildContainerName ( path [ currentLevel ] ) ;
5149
52- if ( container == null )
53- {
54- if ( currentLevelContainer . Items == null )
55- currentLevelContainer . Items = new List < CollectionItem > ( ) ;
50+ var container = currentLevelContainer . Items ? . FirstOrDefault ( x => x . Name == containerName ) ;
5651
57- currentLevelContainer . Items . Add ( container = new CollectionItem
52+ if ( container == null )
5853 {
59- Name = containerName ,
60- Items = new List < CollectionItem > ( )
61- } ) ;
62- }
54+ currentLevelContainer . Items ??= [ ] ;
55+
56+ container = new CollectionItem { Name = containerName , Items = [ ] } ;
57+
58+ currentLevelContainer . Items . Add ( container ) ;
59+ }
6360
64- BuildCollectionItems ( container , currentLevel + 1 , item ) ;
61+ currentLevelContainer = container ;
62+ currentLevel += 1 ;
63+ }
6564 }
6665
67- private static CollectionItem BuildRequestCollectionItem ( IControllerMetaData metaData , KeyValuePair < HttpMethod , string > route ) =>
66+ private static CollectionItem BuildRequestCollectionItem ( IControllerMetadata metaData , KeyValuePair < HttpMethod , IControllerRoute > route ) =>
6867 new ( )
6968 {
7069 Name = BuildRequestName ( metaData ) ,
7170 Request = RequestBuilder . Build ( metaData , route ) ,
72- Event = new List < Models . Event > { BasicTestsBuilder . Build ( ) }
71+ Event = [ BasicTestsBuilder . Build ( ) ]
7372 } ;
7473
75- private static string BuildRequestName ( IControllerMetaData metaData ) => metaData . ControllerType . Name . Replace ( "Controller" , "" ) ;
74+ private static string BuildRequestName ( IControllerMetadata metaData ) => metaData . ControllerType . Name . Replace ( "Controller" , "" ) ;
75+
7676 private static string BuildContainerName ( string urlPart ) => CultureInfo . CurrentCulture . TextInfo . ToTitleCase ( urlPart . ToLower ( ) ) ;
7777}
0 commit comments