Skip to content

Commit bfef44f

Browse files
committed
[up] to Simplify.Web 5.0
[r] to new asp.net project structure [up] Tester app to .NET 8 [edit] swithc to new internal Json impl [r] C# style [edit] some controllers switch to v2
1 parent a40ced3 commit bfef44f

18 files changed

+107
-158
lines changed

src/Simplify.Web.Postman/Assembly/Collection/CollectionBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ public class CollectionBuilder
1616
/// </summary>
1717
/// <param name="partBuilders">The part builders.</param>
1818
/// <exception cref="ArgumentNullException">partBuilders</exception>
19-
public CollectionBuilder(IList<ICollectionPartBuilder> partBuilders) => _partBuilders = partBuilders ??
20-
throw new ArgumentNullException(nameof(partBuilders));
19+
public CollectionBuilder(IList<ICollectionPartBuilder> partBuilders) =>
20+
_partBuilders = partBuilders ?? throw new ArgumentNullException(nameof(partBuilders));
2121

2222
/// <summary>
2323
/// Builds the collection model.

src/Simplify.Web.Postman/Assembly/Collection/PartBuilders/CollectionHeaderBuilder.cs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,19 @@ namespace Simplify.Web.Postman.Assembly.Collection.PartBuilders;
77
/// Provides CollectionHeader builder
88
/// </summary>
99
/// <seealso cref="ICollectionPartBuilder" />
10-
public class CollectionHeaderBuilder : ICollectionPartBuilder
10+
/// <remarks>
11+
/// Initializes a new instance of the <see cref="CollectionHeaderBuilder"/> class.
12+
/// </remarks>
13+
/// <param name="settings">The settings.</param>
14+
public class CollectionHeaderBuilder(IPostmanGenerationSettings settings) : ICollectionPartBuilder
1115
{
12-
private readonly IPostmanGenerationSettings _settings;
13-
14-
/// <summary>
15-
/// Initializes a new instance of the <see cref="CollectionHeaderBuilder"/> class.
16-
/// </summary>
17-
/// <param name="settings">The settings.</param>
18-
public CollectionHeaderBuilder(IPostmanGenerationSettings settings) => _settings = settings;
19-
2016
/// <summary>
2117
/// Builds the specified model part.
2218
/// </summary>
2319
/// <param name="model">The model.</param>
2420
public void Build(CollectionModel model) =>
2521
model.Header = new CollectionHeader
2622
{
27-
Name = _settings.ProjectName
23+
Name = settings.ProjectName
2824
};
2925
}
Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
using System.Collections.Generic;
22
using System.Globalization;
33
using 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;
58
using Simplify.Web.Postman.Models;
69

710
namespace 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
}

src/Simplify.Web.Postman/Assembly/Collection/PartBuilders/RequestBuilder.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Text.Json;
5-
using Simplify.Web.Meta;
5+
using Simplify.Web.Controllers.Meta;
6+
using Simplify.Web.Controllers.Meta.Routing;
7+
using Simplify.Web.Http;
68
using Simplify.Web.Postman.Models;
79

810
namespace Simplify.Web.Postman.Assembly.Collection.PartBuilders;
@@ -33,21 +35,21 @@ public static string BaseUrlPath
3335
/// </summary>
3436
/// <param name="metaData">The meta data.</param>
3537
/// <param name="route">The route.</param>
36-
public static Request Build(IControllerMetaData metaData, KeyValuePair<HttpMethod, string> route) =>
38+
public static Request Build(IControllerMetadata metaData, KeyValuePair<HttpMethod, IControllerRoute> route) =>
3739
new()
3840
{
3941
Url = new Url
4042
{
4143
Host = BaseUrlPath,
42-
Path = BuildPath(route.Value)
44+
Path = BuildPath(route.Value.Path)
4345
},
4446
Method = route.Key.ToString().ToUpper(),
4547
Body = TryBuildBody(metaData)
4648
};
4749

4850
private static IList<string> BuildPath(string controllerRoute) => controllerRoute.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).ToList();
4951

50-
private static Body? TryBuildBody(IControllerMetaData metaData)
52+
private static Body? TryBuildBody(IControllerMetadata metaData)
5153
{
5254
if (metaData.ControllerType.BaseType!.GenericTypeArguments.Length == 0)
5355
return null;
@@ -56,9 +58,9 @@ public static Request Build(IControllerMetaData metaData, KeyValuePair<HttpMetho
5658
{
5759
Mode = "raw",
5860
Raw = BuildRequestJsonData(metaData.ControllerType.BaseType.GenericTypeArguments[0]),
59-
Options = new()
61+
Options = new BodyOptions
6062
{
61-
Raw = new()
63+
Raw = new BodyRawOptions
6264
{
6365
Language = "json"
6466
}
@@ -94,7 +96,7 @@ private static Type ConstructGenericListTypeFromGenericIList(Type sourceListType
9496
{
9597
var type = typeof(List<>);
9698

97-
Type[] typeArgs = { sourceListType.GetGenericArguments()[0] };
99+
Type[] typeArgs = [sourceListType.GetGenericArguments()[0]];
98100

99101
return type.MakeGenericType(typeArgs);
100102
}
@@ -114,7 +116,7 @@ private static void InitializeListsSingleEmptyValues(object model)
114116
var emptyList = Activator.CreateInstance(emptyListType);
115117
var emptyItem = Activator.CreateInstance(listObjectType);
116118

117-
emptyListType.GetMethod("Add")!.Invoke(emptyList, new[] { emptyItem });
119+
emptyListType.GetMethod("Add")!.Invoke(emptyList, [emptyItem]);
118120

119121
propertyInfo.SetValue(model, emptyList);
120122
}

src/Simplify.Web.Postman/Assembly/Environment/EnvironmentBuilder.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System.Collections.Generic;
21
using Simplify.Web.Postman.Models;
32
using Simplify.Web.Postman.Settings;
43

@@ -25,13 +24,13 @@ public EnvironmentModel Create() =>
2524
new()
2625
{
2726
Name = _settings.ProjectName,
28-
Values = new List<PostmanValue>
29-
{
27+
Values =
28+
[
3029
new PostmanValue
3130
{
3231
Key = "BaseUrl",
3332
Value = "http://localhost:5000"
3433
}
35-
}
34+
]
3635
};
3736
}

src/Simplify.Web.Postman/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## [1.2] - Unreleased
4+
5+
### Dependencies
6+
7+
- Simplify.Web bump to 5.0
8+
39
## [1.1] - 2023-11-07
410

511
### Fixed

src/Simplify.Web.Postman/IO/ModelToFileExporter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using System.IO;
2-
using Simplify.Web.Modules;
2+
using Simplify.Web.Modules.ApplicationEnvironment;
33
using Simplify.Web.Postman.Json;
44

55
namespace Simplify.Web.Postman.IO;
@@ -44,5 +44,5 @@ public void Export(object model, string fileName)
4444

4545
private static string GenerateCollectionFilePath(string folderPath, string fileName) => Path.Combine(folderPath, fileName);
4646

47-
private string GenerateExportFolderPath() => Path.Combine(_environment.SitePhysicalPath, _generationFolderPath);
47+
private string GenerateExportFolderPath() => Path.Combine(_environment.AppPhysicalPath, _generationFolderPath);
4848
}

src/Simplify.Web.Postman/Setup/SimplifyDIRegistratorExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using System.Collections.Generic;
22
using Simplify.DI;
3-
using Simplify.Web.Modules;
3+
using Simplify.Web.Modules.ApplicationEnvironment;
44
using Simplify.Web.Postman.Assembly.Collection;
55
using Simplify.Web.Postman.Assembly.Collection.PartBuilders;
66
using Simplify.Web.Postman.Assembly.Environment;

src/Simplify.Web.Postman/Simplify.Web.Postman.csproj

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
99
<GenerateDocumentationFile>true</GenerateDocumentationFile>
1010

11-
<Version>1.1</Version>
11+
<Version>2.0-pre01</Version>
1212

1313
<Description>Postman collection and environment generation extension for Simplify.Web</Description>
1414
<Product>Simplify</Product>
15-
<Authors>Alexander Krylkov</Authors>
15+
<Authors>Simplify community</Authors>
1616
<Copyright>Licensed under LGPL</Copyright>
1717
<PackageIcon>icon.png</PackageIcon>
1818
<PackageProjectUrl>https://github.com/SimplifyNet/Simplify.Web.Postman</PackageProjectUrl>
@@ -24,8 +24,7 @@
2424
<PackageReleaseNotes>See https://github.com/SimplifyNet/Simplify.Web.Postman/blob/master/src/Simplify.Web.Postman/CHANGELOG.md for details</PackageReleaseNotes>
2525
</PropertyGroup>
2626
<ItemGroup>
27-
<PackageReference Include="Simplify.Web" Version="4.7.1" />
28-
<PackageReference Include="System.Text.Json" Version="7.0.3" />
27+
<PackageReference Include="Simplify.Web" Version="5.0-pre01" />
2928
</ItemGroup>
3029
<ItemGroup>
3130
<None Include="..\..\images\icon.png" Pack="true" Visible="false" PackagePath="" />

src/TesterApp/Controllers/Api/v1/Groups/GetMultipleController.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,30 @@
22
using Microsoft.AspNetCore.Mvc;
33
using Simplify.Web;
44
using Simplify.Web.Attributes;
5-
using Simplify.Web.Json.Responses;
6-
using TesterApp.ViewModels;
75
using TesterApp.ViewModels.Groups;
86

97
namespace TesterApp.Controllers.Api.v1.Groups;
108

119
[Produces("application/json")]
1210
[Get("/api/v1/groups")]
13-
public class GetMultipleController : Simplify.Web.Controller
11+
public class GetMultipleController : Controller2
1412
{
15-
public override ControllerResponse Invoke()
13+
public ControllerResponse Invoke()
1614
{
1715
var items = new List<GroupViewModel>
1816
{
19-
new GroupViewModel
17+
new()
2018
{
2119
Name = "Group 1"
2220
},
23-
new GroupViewModel
21+
new()
2422
{
2523
Name = "Group 2"
2624
}
2725
};
2826

2927
// Items retrieve
3028

31-
return new Json(items);
29+
return Json(items);
3230
}
3331
}

src/TesterApp/Controllers/Api/v1/Groups/RenameController.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,11 @@ namespace TesterApp.Controllers.Api.v1.Groups;
66

77
[Produces("application/text")]
88
[Authorize]
9-
[Patch("/api/v1/groups/{id:int}/rename")]
10-
public class RenameController : Simplify.Web.Controller
9+
[Patch("/api/v1/groups/{id}/rename")]
10+
public class RenameController : Controller2
1111
{
12-
public override ControllerResponse Invoke()
13-
{
14-
if (RouteParameters.id <= 0)
15-
return StatusCode(400, "User ID is invalid");
16-
17-
return NoContent();
18-
}
12+
public ControllerResponse Invoke(int id) =>
13+
id <= 0
14+
? StatusCode(400, "User ID is invalid")
15+
: NoContent();
1916
}

src/TesterApp/Controllers/Api/v1/Users/GetController.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
using System;
22
using Simplify.Web;
33
using Simplify.Web.Attributes;
4-
using Simplify.Web.Json.Responses;
5-
using TesterApp.ViewModels;
64
using TesterApp.ViewModels.Users;
75

86
namespace TesterApp.Controllers.Api.v1.Users;
97

108
[Get("/api/v1/users/{id:int}")]
11-
public class GetController : Simplify.Web.Controller
9+
public class GetController : Controller
1210
{
1311
public override ControllerResponse Invoke() =>
14-
new Json(new UserViewModel
12+
Json(new UserViewModel
1513
{
1614
UserName = "User 1",
1715
CreationTime = DateTime.Now

0 commit comments

Comments
 (0)