Skip to content

Commit 16f9a3c

Browse files
authored
Make openapi models point to 'components' and generate openapi constraints based on fluentvalidation validators (CarterCommunity#158)
1 parent 5dfc97f commit 16f9a3c

File tree

15 files changed

+1167
-11
lines changed

15 files changed

+1167
-11
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ obj/
33
.vs/
44
.vscode/
55
.idea/
6-
codeship.aes
6+
codeship.aes
7+
/*.user

Carter.sln

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CarterAndMVC", "samples\Car
2828
EndProject
2929
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ValidatorOnlyProject", "samples\ValidatorOnlyProject\ValidatorOnlyProject.csproj", "{E5D99119-96EB-4C01-9EC2-A06FC3EEC182}"
3030
EndProject
31+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleSDKClient", "samples\SampleSDKClient\SampleSDKClient.csproj", "{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}"
32+
EndProject
3133
Global
3234
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3335
Debug|Any CPU = Debug|Any CPU
@@ -122,6 +124,18 @@ Global
122124
{E5D99119-96EB-4C01-9EC2-A06FC3EEC182}.Release|x64.Build.0 = Release|Any CPU
123125
{E5D99119-96EB-4C01-9EC2-A06FC3EEC182}.Release|x86.ActiveCfg = Release|Any CPU
124126
{E5D99119-96EB-4C01-9EC2-A06FC3EEC182}.Release|x86.Build.0 = Release|Any CPU
127+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
128+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Debug|Any CPU.Build.0 = Debug|Any CPU
129+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Debug|x64.ActiveCfg = Debug|Any CPU
130+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Debug|x64.Build.0 = Debug|Any CPU
131+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Debug|x86.ActiveCfg = Debug|Any CPU
132+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Debug|x86.Build.0 = Debug|Any CPU
133+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Release|Any CPU.ActiveCfg = Release|Any CPU
134+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Release|Any CPU.Build.0 = Release|Any CPU
135+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Release|x64.ActiveCfg = Release|Any CPU
136+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Release|x64.Build.0 = Release|Any CPU
137+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Release|x86.ActiveCfg = Release|Any CPU
138+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836}.Release|x86.Build.0 = Release|Any CPU
125139
EndGlobalSection
126140
GlobalSection(SolutionProperties) = preSolution
127141
HideSolutionNode = FALSE
@@ -134,6 +148,7 @@ Global
134148
{DD5E942A-D546-489B-A5E9-8CB42C61BEC1} = {DCB5B9A0-F06D-4BDF-917D-A459C790C718}
135149
{CE26885C-BB25-4A2C-B550-1D807CD1A066} = {35DE35A0-758D-4FDD-BDA3-67F04F65677D}
136150
{E5D99119-96EB-4C01-9EC2-A06FC3EEC182} = {35DE35A0-758D-4FDD-BDA3-67F04F65677D}
151+
{A4ACBFCD-7B56-4FDB-809B-6FD26985A836} = {35DE35A0-758D-4FDD-BDA3-67F04F65677D}
137152
EndGlobalSection
138153
GlobalSection(ExtensibilityGlobals) = postSolution
139154
SolutionGuid = {9096DE78-6327-48BA-AE0E-336F769681A7}

samples/CarterSample/Features/Actors/OpenApi/AddActor.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,7 @@ public class AddActor : RouteMetaData
1212
public override RouteMetaDataResponse[] Responses { get; } = { new RouteMetaDataResponse { Code = 201, Description = "Created Actors" } };
1313

1414
public override string Tag { get; } = "Actors";
15+
16+
public override string OperationId { get; } = "Actors_AddActor";
1517
}
1618
}

samples/CarterSample/Features/Actors/OpenApi/DeleteActor.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,7 @@ public class DeleteActor : RouteMetaData
99
public override RouteMetaDataResponse[] Responses { get; } = { new RouteMetaDataResponse { Code = 204, Description = "Deleted Actor" } };
1010

1111
public override string Tag { get; } = "Actors";
12+
13+
public override string OperationId { get; } = "Actors_DeleteActor";
1214
}
1315
}

samples/CarterSample/Features/Actors/OpenApi/GetActorById.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,7 @@ public class GetActorById : RouteMetaData
2121
};
2222

2323
public override string Tag { get; } = "Actors";
24+
25+
public override string OperationId { get; } = "Actors_GetActorById";
2426
}
2527
}

samples/CarterSample/Features/Actors/OpenApi/GetActors.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,7 @@ public class GetActors : RouteMetaData
1818
};
1919

2020
public override string Tag { get; } = "Actors";
21+
22+
public override string OperationId { get; } = "Actors_GetActors";
2123
}
2224
}

samples/CarterSample/Features/Actors/OpenApi/UpdateActor.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,8 @@ public class UpdateActor : RouteMetaData
1212
public override string Description { get; } = "Update an existing actor";
1313

1414
public override RouteMetaDataResponse[] Responses { get; } = { new RouteMetaDataResponse { Code = 204, Description = "Updated Actor" } };
15+
16+
public override string OperationId { get; } = "Actors_UpdateActor";
17+
1518
}
1619
}

samples/SampleSDKClient/PetSDK.cs

Lines changed: 426 additions & 0 deletions
Large diffs are not rendered by default.

samples/SampleSDKClient/Program.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
namespace SampleSDKClient
2+
{
3+
using System;
4+
using System.Net.Http;
5+
using System.Threading.Tasks;
6+
7+
class Program
8+
{
9+
static async Task Main(string[] args)
10+
{
11+
//dotnet dotnet-nswag.dll swagger2csclient /input:http://localhost:5000/openapi /namespace:SampleSDKClient /usebaseurl:false /responsearraytype:System.Collections.Generic.IEnumerable /RequiredPropertiesMustBeDefined:true /output:/Users/jonathan/Projects/Carter/samples/SampleSDKClient/SDK.cs
12+
13+
var httpClient = new HttpClient { BaseAddress = new Uri("http://localhost:5000") };
14+
15+
var actorsClient = new ActorsClient(httpClient);
16+
17+
var actors = await actorsClient.GetActorsAsync();
18+
19+
foreach (var actor in actors)
20+
{
21+
Console.WriteLine(actor.Id + Environment.NewLine + actor.Name + Environment.NewLine + actor.Age);
22+
}
23+
}
24+
}
25+
}

0 commit comments

Comments
 (0)