Skip to content

Commit 9798f4f

Browse files
committed
Add minimal Swashbuckle setup
1 parent 523ac62 commit 9798f4f

File tree

5 files changed

+91
-0
lines changed

5 files changed

+91
-0
lines changed

JsonApiDotNetCore.sln

+30
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MultiDbContextTests", "test
4444
EndProject
4545
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestBuildingBlocks", "test\TestBuildingBlocks\TestBuildingBlocks.csproj", "{210FD61E-FF5D-4CEE-8E0D-C739ECCCBA21}"
4646
EndProject
47+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenApi", "src\OpenApi\OpenApi.csproj", "{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}"
48+
EndProject
49+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenApiTests", "test\OpenApiTests\OpenApiTests.csproj", "{B693DE14-BB28-496F-AB39-B4E674ABCA80}"
50+
EndProject
4751
Global
4852
GlobalSection(SolutionConfigurationPlatforms) = preSolution
4953
Debug|Any CPU = Debug|Any CPU
@@ -210,6 +214,30 @@ Global
210214
{210FD61E-FF5D-4CEE-8E0D-C739ECCCBA21}.Release|x64.Build.0 = Release|Any CPU
211215
{210FD61E-FF5D-4CEE-8E0D-C739ECCCBA21}.Release|x86.ActiveCfg = Release|Any CPU
212216
{210FD61E-FF5D-4CEE-8E0D-C739ECCCBA21}.Release|x86.Build.0 = Release|Any CPU
217+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
218+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Debug|Any CPU.Build.0 = Debug|Any CPU
219+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Debug|x64.ActiveCfg = Debug|Any CPU
220+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Debug|x64.Build.0 = Debug|Any CPU
221+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Debug|x86.ActiveCfg = Debug|Any CPU
222+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Debug|x86.Build.0 = Debug|Any CPU
223+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Release|Any CPU.ActiveCfg = Release|Any CPU
224+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Release|Any CPU.Build.0 = Release|Any CPU
225+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Release|x64.ActiveCfg = Release|Any CPU
226+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Release|x64.Build.0 = Release|Any CPU
227+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Release|x86.ActiveCfg = Release|Any CPU
228+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289}.Release|x86.Build.0 = Release|Any CPU
229+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
230+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Debug|Any CPU.Build.0 = Debug|Any CPU
231+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Debug|x64.ActiveCfg = Debug|Any CPU
232+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Debug|x64.Build.0 = Debug|Any CPU
233+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Debug|x86.ActiveCfg = Debug|Any CPU
234+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Debug|x86.Build.0 = Debug|Any CPU
235+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Release|Any CPU.ActiveCfg = Release|Any CPU
236+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Release|Any CPU.Build.0 = Release|Any CPU
237+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Release|x64.ActiveCfg = Release|Any CPU
238+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Release|x64.Build.0 = Release|Any CPU
239+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Release|x86.ActiveCfg = Release|Any CPU
240+
{B693DE14-BB28-496F-AB39-B4E674ABCA80}.Release|x86.Build.0 = Release|Any CPU
213241
EndGlobalSection
214242
GlobalSection(SolutionProperties) = preSolution
215243
HideSolutionNode = FALSE
@@ -228,6 +256,8 @@ Global
228256
{6CAFDDBE-00AB-4784-801B-AB419C3C3A26} = {026FBC6C-AF76-4568-9B87-EC73457899FD}
229257
{EC3202C6-1D4C-4B14-A599-B9D3F27FE3BA} = {24B15015-62E5-42E1-9BA0-ECE6BE7AA15F}
230258
{210FD61E-FF5D-4CEE-8E0D-C739ECCCBA21} = {24B15015-62E5-42E1-9BA0-ECE6BE7AA15F}
259+
{71287D6F-6C3B-44B4-9FCA-E78FE3F02289} = {7A2B7ADD-ECB5-4D00-AA6A-D45BD11C97CF}
260+
{B693DE14-BB28-496F-AB39-B4E674ABCA80} = {24B15015-62E5-42E1-9BA0-ECE6BE7AA15F}
231261
EndGlobalSection
232262
GlobalSection(ExtensibilityGlobals) = postSolution
233263
SolutionGuid = {A2421882-8F0A-4905-928F-B550B192F9A4}

src/JsonApiDotNetCore/Properties/AssemblyInfo.cs

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Runtime.CompilerServices;
22

3+
[assembly: InternalsVisibleTo("OpenApi")]
34
[assembly: InternalsVisibleTo("Benchmarks")]
45
[assembly: InternalsVisibleTo("JsonApiDotNetCoreTests")]
56
[assembly: InternalsVisibleTo("UnitTests")]

src/OpenApi/OpenApi.csproj

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net5.0</TargetFramework>
5+
</PropertyGroup>
6+
7+
<ItemGroup>
8+
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.1" />
9+
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="6.2.1" />
10+
<PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="6.2.1" />
11+
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.2.1" />
12+
</ItemGroup>
13+
14+
<ItemGroup>
15+
<ProjectReference Include="..\JsonApiDotNetCore\JsonApiDotNetCore.csproj" />
16+
</ItemGroup>
17+
18+
</Project>
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System.Linq;
2+
using JsonApiDotNetCore;
3+
using Microsoft.AspNetCore.Mvc.ApplicationModels;
4+
using Microsoft.AspNetCore.Mvc.Routing;
5+
6+
namespace OpenApi
7+
{
8+
internal sealed class OpenApiEndpointConvention : IActionModelConvention
9+
{
10+
public void Apply(ActionModel action)
11+
{
12+
ArgumentGuard.NotNull(action, nameof(action));
13+
14+
if (!action.ActionMethod.GetCustomAttributes(true).OfType<HttpMethodAttribute>().Any())
15+
{
16+
action.ApiExplorer.IsVisible = false;
17+
}
18+
}
19+
}
20+
}
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System;
2+
using JsonApiDotNetCore;
3+
using Microsoft.Extensions.DependencyInjection;
4+
using Swashbuckle.AspNetCore.SwaggerGen;
5+
6+
namespace OpenApi
7+
{
8+
public static class ServiceCollectionExtensions
9+
{
10+
public static void AddOpenApi(this IServiceCollection services, IMvcCoreBuilder builder, Action<SwaggerGenOptions> setupSwaggerGenAction)
11+
{
12+
ArgumentGuard.NotNull(services, nameof(services));
13+
ArgumentGuard.NotNull(builder, nameof(builder));
14+
15+
builder.AddApiExplorer();
16+
17+
builder.AddMvcOptions(options => options.Conventions.Add(new OpenApiEndpointConvention()));
18+
19+
services.AddSwaggerGen(setupSwaggerGenAction);
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)