Skip to content

Commit ed4e3c1

Browse files
authored
Merge pull request #364 from OpenShock/chore/update-openapi
Chore/update openapi
2 parents 55a696b + 1b442f5 commit ed4e3c1

10 files changed

Lines changed: 73 additions & 94 deletions

‎Common/DataAnnotations/EmailAddressAttribute.cs‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System.ComponentModel.DataAnnotations;
22
using System.Net.Mail;
3-
using Microsoft.OpenApi.Any;
4-
using Microsoft.OpenApi.Models;
3+
using System.Text.Json.Nodes;
4+
using Microsoft.OpenApi;
55
using OpenShock.Common.Constants;
66
using OpenShock.Common.DataAnnotations.Interfaces;
77

@@ -63,9 +63,12 @@ public void Apply(OpenApiSchema schema)
6363
{
6464
//if (ShouldValidate) schema.Pattern = ???;
6565

66-
schema.Example = new OpenApiString(ExampleValue);
66+
schema.Example = JsonValue.Create(ExampleValue);
6767
}
6868

6969
/// <inheritdoc/>
70-
public void Apply(OpenApiParameter parameter) => Apply(parameter.Schema);
70+
public void Apply(OpenApiParameter parameter)
71+
{
72+
if (parameter.Schema is OpenApiSchema schema) Apply(schema);
73+
}
7174
}

‎Common/DataAnnotations/Interfaces/IOperationAttribute.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Microsoft.OpenApi.Models;
1+
using Microsoft.OpenApi;
22

33
namespace OpenShock.Common.DataAnnotations.Interfaces;
44

‎Common/DataAnnotations/Interfaces/IParameterAttribute.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Microsoft.OpenApi.Models;
1+
using Microsoft.OpenApi;
22

33
namespace OpenShock.Common.DataAnnotations.Interfaces;
44

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using Microsoft.OpenApi.Any;
2-
using Microsoft.OpenApi.Models;
1+
using System.Text.Json.Nodes;
2+
using Microsoft.OpenApi;
33
using OpenShock.Common.Models;
44

55
namespace OpenShock.Common.DataAnnotations;
@@ -8,14 +8,14 @@ public static class OpenApiSchemas
88
{
99
public static OpenApiSchema SemVerSchema => new OpenApiSchema {
1010
Title = "SemVer",
11-
Type = "string",
11+
Type = JsonSchemaType.String,
1212
Pattern = /* lang=regex */ "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
13-
Example = new OpenApiString("1.0.0-dev+a16f2")
13+
Example = JsonValue.Create("1.0.0-dev+a16f2")
1414
};
1515

1616
public static OpenApiSchema PauseReasonEnumSchema => new OpenApiSchema {
1717
Title = nameof(PauseReason),
18-
Type = "integer",
18+
Type = JsonSchemaType.Integer,
1919
Description = """
2020
An integer representing the reason(s) for the shocker being paused, expressed as a bitfield where reasons are OR'd together.
2121
@@ -26,6 +26,6 @@ public static class OpenApiSchemas
2626
2727
For example, a value of 6 (2 | 4) indicates both 'UserShare' and 'PublicShare' reasons.
2828
""",
29-
Example = new OpenApiInteger(6)
29+
Example = JsonValue.Create(6)
3030
};
3131
}

‎Common/DataAnnotations/PasswordAttribute.cs‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using System.ComponentModel.DataAnnotations;
2-
using Microsoft.OpenApi.Any;
3-
using Microsoft.OpenApi.Models;
2+
using System.Text.Json.Nodes;
3+
using Microsoft.OpenApi;
44
using OpenShock.Common.Constants;
55
using OpenShock.Common.DataAnnotations.Interfaces;
66

@@ -62,9 +62,12 @@ public void Apply(OpenApiSchema schema)
6262
{
6363
//if (ShouldValidate) schema.Pattern = ???;
6464

65-
schema.Example = new OpenApiString(ExampleValue);
65+
schema.Example = JsonValue.Create(ExampleValue);
6666
}
6767

6868
/// <inheritdoc/>
69-
public void Apply(OpenApiParameter parameter) => Apply(parameter.Schema);
69+
public void Apply(OpenApiParameter parameter)
70+
{
71+
if (parameter.Schema is OpenApiSchema schema) Apply(schema);
72+
}
7073
}

‎Common/DataAnnotations/UsernameAttribute.cs‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using System.ComponentModel.DataAnnotations;
2-
using Microsoft.OpenApi.Any;
3-
using Microsoft.OpenApi.Models;
2+
using System.Text.Json.Nodes;
3+
using Microsoft.OpenApi;
44
using OpenShock.Common.DataAnnotations.Interfaces;
55
using OpenShock.Common.Validation;
66

@@ -56,9 +56,12 @@ public void Apply(OpenApiSchema schema)
5656
{
5757
//if (ShouldValidate) schema.Pattern = ???;
5858

59-
schema.Example = new OpenApiString(ExampleValue);
59+
schema.Example = JsonValue.Create(ExampleValue);
6060
}
6161

6262
/// <inheritdoc/>
63-
public void Apply(OpenApiParameter parameter) => Apply(parameter.Schema);
63+
public void Apply(OpenApiParameter parameter)
64+
{
65+
if (parameter.Schema is OpenApiSchema schema) Apply(schema);
66+
}
6467
}

‎Common/Swagger/AttributeFilter.cs‎

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using Microsoft.AspNetCore.Authorization;
2-
using Microsoft.OpenApi.Models;
2+
using Microsoft.OpenApi;
33
using OpenShock.Common.Authentication;
44
using OpenShock.Common.DataAnnotations.Interfaces;
55
using Swashbuckle.AspNetCore.SwaggerGen;
@@ -8,27 +8,33 @@ namespace OpenShock.Common.Swagger;
88

99
public sealed class AttributeFilter : ISchemaFilter, IParameterFilter, IOperationFilter
1010
{
11-
public void Apply(OpenApiParameter parameter, ParameterFilterContext context)
11+
// Microsoft.OpenApi v2 hands the filters the read-only IOpenApi* views; only the concrete
12+
// types are mutable, so anything we cannot write to is left untouched.
13+
public void Apply(IOpenApiParameter parameter, ParameterFilterContext context)
1214
{
15+
if (parameter is not OpenApiParameter openApiParameter) return;
16+
1317
// Apply OpenShock Parameter Attributes
1418
foreach (var attribute in context.ParameterInfo?.GetCustomAttributes(true).OfType<IParameterAttribute>() ?? [])
1519
{
16-
attribute.Apply(parameter);
20+
attribute.Apply(openApiParameter);
1721
}
1822

1923
// Apply OpenShock Parameter Attributes
2024
foreach (var attribute in context.PropertyInfo?.GetCustomAttributes(true).OfType<IParameterAttribute>() ?? [])
2125
{
22-
attribute.Apply(parameter);
26+
attribute.Apply(openApiParameter);
2327
}
2428
}
2529

26-
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
30+
public void Apply(IOpenApiSchema schema, SchemaFilterContext context)
2731
{
32+
if (schema is not OpenApiSchema openApiSchema) return;
33+
2834
// Apply OpenShock Parameter Attributes
2935
foreach (var attribute in context.MemberInfo?.GetCustomAttributes(true).OfType<IParameterAttribute>() ?? [])
3036
{
31-
attribute.Apply(schema);
37+
attribute.Apply(openApiSchema);
3238
}
3339
}
3440

@@ -67,40 +73,19 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context)
6773
{
6874
OpenShockAuthSchemes.UserSessionCookie => [
6975
new OpenApiSecurityRequirement {{
70-
new OpenApiSecurityScheme
71-
{
72-
Reference = new OpenApiReference
73-
{
74-
Id = OpenShockAuthSchemes.UserSessionCookie,
75-
Type = ReferenceType.SecurityScheme,
76-
}
77-
},
76+
new OpenApiSecuritySchemeReference(OpenShockAuthSchemes.UserSessionCookie, context.Document),
7877
securityInfos
7978
}}
8079
],
8180
OpenShockAuthSchemes.ApiToken => [
8281
new OpenApiSecurityRequirement {{
83-
new OpenApiSecurityScheme
84-
{
85-
Reference = new OpenApiReference
86-
{
87-
Id = OpenShockAuthSchemes.ApiToken,
88-
Type = ReferenceType.SecurityScheme,
89-
}
90-
},
82+
new OpenApiSecuritySchemeReference(OpenShockAuthSchemes.ApiToken, context.Document),
9183
securityInfos
9284
}}
9385
],
9486
OpenShockAuthSchemes.HubToken => [
9587
new OpenApiSecurityRequirement {{
96-
new OpenApiSecurityScheme
97-
{
98-
Reference = new OpenApiReference
99-
{
100-
Id = OpenShockAuthSchemes.HubToken,
101-
Type = ReferenceType.SecurityScheme
102-
}
103-
},
88+
new OpenApiSecuritySchemeReference(OpenShockAuthSchemes.HubToken, context.Document),
10489
securityInfos
10590
}}
10691
],
@@ -112,7 +97,7 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context)
11297
}
11398
else
11499
{
115-
operation.Security.Clear();
100+
operation.Security?.Clear();
116101
}
117102
}
118103
}

‎Common/Swagger/SwaggerGenExtensions.cs‎

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Microsoft.OpenApi.Models;
1+
using Microsoft.OpenApi;
22
using OpenShock.Common.Constants;
33
using OpenShock.Common.DataAnnotations;
44
using OpenShock.Common.Models;
@@ -46,38 +46,23 @@ public static IServiceCollection AddSwaggerExt<TProgram>(this WebApplicationBuil
4646
Description = "Enter user session cookie",
4747
In = ParameterLocation.Cookie,
4848
Type = SecuritySchemeType.ApiKey,
49-
Scheme = OpenShockAuthSchemes.UserSessionCookie,
50-
Reference = new OpenApiReference
51-
{
52-
Id = OpenShockAuthSchemes.UserSessionCookie,
53-
Type = ReferenceType.SecurityScheme,
54-
}
49+
Scheme = OpenShockAuthSchemes.UserSessionCookie
5550
});
5651
options.AddSecurityDefinition(OpenShockAuthSchemes.ApiToken, new OpenApiSecurityScheme
5752
{
5853
Name = AuthConstants.ApiTokenHeaderName,
5954
Description = "Enter API Token",
6055
In = ParameterLocation.Header,
6156
Type = SecuritySchemeType.ApiKey,
62-
Scheme = OpenShockAuthSchemes.ApiToken,
63-
Reference = new OpenApiReference
64-
{
65-
Id = OpenShockAuthSchemes.ApiToken,
66-
Type = ReferenceType.SecurityScheme,
67-
}
57+
Scheme = OpenShockAuthSchemes.ApiToken
6858
});
6959
options.AddSecurityDefinition(OpenShockAuthSchemes.HubToken, new OpenApiSecurityScheme
7060
{
7161
Name = AuthConstants.HubTokenHeaderName,
7262
Description = "Enter hub token",
7363
In = ParameterLocation.Header,
7464
Type = SecuritySchemeType.ApiKey,
75-
Scheme = OpenShockAuthSchemes.HubToken,
76-
Reference = new OpenApiReference
77-
{
78-
Id = OpenShockAuthSchemes.HubToken,
79-
Type = ReferenceType.SecurityScheme,
80-
}
65+
Scheme = OpenShockAuthSchemes.HubToken
8166
});
8267
options.AddServer(new OpenApiServer { Url = "https://api.openshock.app" });
8368
options.AddServer(new OpenApiServer { Url = "https://api.openshock.dev" });

‎Common/Utils/ConfigureSwaggerOptions.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Asp.Versioning.ApiExplorer;
22
using Microsoft.Extensions.Options;
3-
using Microsoft.OpenApi.Models;
3+
using Microsoft.OpenApi;
44
using Swashbuckle.AspNetCore.SwaggerGen;
55

66
namespace OpenShock.Common.Utils;

‎Directory.Packages.props‎

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,50 +6,50 @@
66
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
77
</PropertyGroup>
88
<ItemGroup>
9-
<PackageVersion Include="Asp.Versioning.Mvc.ApiExplorer" Version="10.0.1" />
9+
<PackageVersion Include="Asp.Versioning.Mvc.ApiExplorer" Version="10.2.1" />
1010
<PackageVersion Include="AspNet.Security.OAuth.Discord" Version="10.0.0" />
1111
<PackageVersion Include="AspNet.Security.OAuth.Twitter" Version="10.0.0" />
1212
<PackageVersion Include="AspNetCore.HealthChecks.NpgSql" Version="9.0.0" />
1313
<PackageVersion Include="AspNetCore.HealthChecks.Redis" Version="9.0.0" />
1414
<PackageVersion Include="BCrypt.Net-Next" Version="4.2.1" />
1515
<PackageVersion Include="Bogus" Version="35.6.5" />
16-
<PackageVersion Include="Fluid.Core" Version="2.31.0" />
17-
<PackageVersion Include="Hangfire.AspNetCore" Version="1.8.24" />
16+
<PackageVersion Include="Fluid.Core" Version="2.40.0" />
17+
<PackageVersion Include="Hangfire.AspNetCore" Version="1.8.25" />
1818
<PackageVersion Include="Hangfire.PostgreSql" Version="1.21.1" />
1919
<PackageVersion Include="IDisposableAnalyzers" Version="4.0.8" />
2020
<PackageVersion Include="MailKit" Version="4.18.0" />
21-
<PackageVersion Include="MessagePack" Version="3.1.8" />
22-
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="10.0.11" />
23-
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="10.0.11" />
21+
<PackageVersion Include="MessagePack" Version="3.1.9" />
22+
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="10.0.12" />
23+
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="10.0.12" />
2424
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.12" />
25-
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Client" Version="10.0.11" />
26-
<PackageVersion Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="10.0.11" />
27-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.11" />
28-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.11" />
29-
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="10.9.0" />
25+
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Client" Version="10.0.12" />
26+
<PackageVersion Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="10.0.12" />
27+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.12" />
28+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.12" />
29+
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="10.10.0" />
3030
<PackageVersion Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" />
3131
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.3" />
32-
<PackageVersion Include="NRedisStack" Version="1.7.3" />
32+
<PackageVersion Include="NRedisStack" Version="1.7.4" />
3333
<PackageVersion Include="OneOf" Version="3.0.271" />
34-
<PackageVersion Include="OpenShock.Internal.Common" Version="0.1.1" />
35-
<PackageVersion Include="OpenShock.Internal.AspNet" Version="0.1.1" />
36-
<PackageVersion Include="OpenShock.Internal.DynamicLinq" Version="0.1.1" />
34+
<PackageVersion Include="OpenShock.Internal.Common" Version="1.1.0" />
35+
<PackageVersion Include="OpenShock.Internal.AspNet" Version="1.1.0" />
36+
<PackageVersion Include="OpenShock.Internal.DynamicLinq" Version="1.1.0" />
3737
<PackageVersion Include="OpenShock.Serialization.Flatbuffers" Version="2.1.0" />
38-
<PackageVersion Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.12.0-beta.1" />
38+
<PackageVersion Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.18.0-beta.1" />
3939
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.18.0" />
4040
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.18.0" />
4141
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.18.0" />
42-
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.17.0" />
42+
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.18.0" />
4343
<PackageVersion Include="Redis.OM" Version="1.3.0" />
44-
<PackageVersion Include="Scalar.AspNetCore" Version="2.16.20" />
44+
<PackageVersion Include="Scalar.AspNetCore" Version="2.17.4" />
4545
<PackageVersion Include="Scrutor" Version="7.0.0" />
4646
<PackageVersion Include="Serilog.AspNetCore" Version="10.0.0" />
4747
<PackageVersion Include="Serilog.Sinks.Grafana.Loki" Version="9.0.2" />
4848
<PackageVersion Include="Serilog.Sinks.OpenTelemetry" Version="4.2.0" />
49-
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerGen" Version="9.0.6" />
50-
<PackageVersion Include="Testcontainers.PostgreSql" Version="4.14.0" />
51-
<PackageVersion Include="Testcontainers.Redis" Version="4.14.0" />
52-
<PackageVersion Include="TUnit" Version="1.65.0" />
53-
<PackageVersion Include="Z.EntityFramework.Plus.EFCore" Version="10.105.7" />
49+
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerGen" Version="10.2.3" />
50+
<PackageVersion Include="Testcontainers.PostgreSql" Version="4.15.0" />
51+
<PackageVersion Include="Testcontainers.Redis" Version="4.15.0" />
52+
<PackageVersion Include="TUnit" Version="1.68.4" />
53+
<PackageVersion Include="Z.EntityFramework.Plus.EFCore" Version="10.105.8.1" />
5454
</ItemGroup>
5555
</Project>

0 commit comments

Comments
 (0)