Skip to content

Commit b33db46

Browse files
authored
Merge pull request #29 from futurum-dev/feature/turn-on-code-analysis
Turn on 'EnforceCodeStyleInBuild' and 'AnalysisLevel' and fix issues
2 parents 0b37270 + 47004de commit b33db46

File tree

5 files changed

+23
-6
lines changed

5 files changed

+23
-6
lines changed

src/Futurum.WebApiEndpoint.Micro/FormFileWithPayload.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Globalization;
12
using System.Reflection;
23
using System.Text.Json;
34

@@ -20,7 +21,9 @@ public class FormFileWithPayload<TPayload> : IBindableFromHttpContext<FormFileWi
2021

2122
public required IFormFile File { get; init; }
2223

24+
#pragma warning disable CA1000
2325
public static async ValueTask<FormFileWithPayload<TPayload>?> BindAsync(HttpContext context, ParameterInfo parameter)
26+
#pragma warning restore CA1000
2427
{
2528
var jsonOptions = context.RequestServices.GetService<JsonOptions>()?.SerializerOptions ?? DefaultSerializerOptions;
2629

@@ -41,7 +44,7 @@ public class FormFileWithPayload<TPayload> : IBindableFromHttpContext<FormFileWi
4144

4245
private static TPayload? GetPayload(IFormCollection form, JsonSerializerOptions jsonOptions)
4346
{
44-
if (form.TryGetValue(nameof(Payload).ToLower(), out var payloadStringValues))
47+
if (form.TryGetValue(nameof(Payload).ToLower(CultureInfo.CurrentCulture), out var payloadStringValues))
4548
{
4649
var payloadString = payloadStringValues.ToString();
4750
var payload = JsonSerializer.Deserialize<TPayload>(payloadString, jsonOptions);
@@ -57,7 +60,9 @@ public class FormFileWithPayload<TPayload> : IBindableFromHttpContext<FormFileWi
5760
? default
5861
: form.Files.Single();
5962

63+
#pragma warning disable CA1000
6064
public static void PopulateMetadata(ParameterInfo parameter, EndpointBuilder builder)
65+
#pragma warning restore CA1000
6166
{
6267
builder.Metadata.Add(new ConsumesAttribute(typeof(FormFileWithPayload<TPayload>), "multipart/form-data"));
6368
}

src/Futurum.WebApiEndpoint.Micro/FormFilesWithPayload.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Globalization;
12
using System.Reflection;
23
using System.Text.Json;
34

@@ -20,7 +21,9 @@ public class FormFilesWithPayload<TPayload> : IBindableFromHttpContext<FormFiles
2021

2122
public required IFormFileCollection Files { get; init; } = new FormFileCollection();
2223

24+
#pragma warning disable CA1000
2325
public static async ValueTask<FormFilesWithPayload<TPayload>?> BindAsync(HttpContext context, ParameterInfo parameter)
26+
#pragma warning restore CA1000
2427
{
2528
var jsonOptions = context.RequestServices.GetService<JsonOptions>()?.SerializerOptions ?? DefaultSerializerOptions;
2629

@@ -41,7 +44,7 @@ public class FormFilesWithPayload<TPayload> : IBindableFromHttpContext<FormFiles
4144

4245
private static TPayload? GetPayload(IFormCollection form, JsonSerializerOptions jsonOptions)
4346
{
44-
if (form.TryGetValue(nameof(Payload).ToLower(), out var payloadStringValues))
47+
if (form.TryGetValue(nameof(Payload).ToLower(CultureInfo.CurrentCulture), out var payloadStringValues))
4548
{
4649
var payloadString = payloadStringValues.ToString();
4750
var payload = JsonSerializer.Deserialize<TPayload>(payloadString, jsonOptions);
@@ -57,7 +60,9 @@ public class FormFilesWithPayload<TPayload> : IBindableFromHttpContext<FormFiles
5760
? null
5861
: form.Files;
5962

63+
#pragma warning disable CA1000
6064
public static void PopulateMetadata(ParameterInfo parameter, EndpointBuilder builder)
65+
#pragma warning restore CA1000
6166
{
6267
builder.Metadata.Add(new ConsumesAttribute(typeof(FormFilesWithPayload<TPayload>), "multipart/form-data"));
6368
}

src/Futurum.WebApiEndpoint.Micro/Futurum.WebApiEndpoint.Micro.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
9+
<EnforceCodeStyleInBuild>True</EnforceCodeStyleInBuild>
10+
<AnalysisLevel>latest-recommended</AnalysisLevel>
911
<IsPackable>true</IsPackable>
1012
<LangVersion>default</LangVersion>
1113
</PropertyGroup>

src/Futurum.WebApiEndpoint.Micro/GlobalExceptionHandler.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
using Microsoft.AspNetCore.Diagnostics;
22

3+
using static Microsoft.Extensions.Logging.LoggerMessage;
4+
35
namespace Futurum.WebApiEndpoint.Micro;
46

57
/// <summary>
68
/// Global exception handler, for unhandled exceptions
79
/// <remarks>Utilises <see cref="IExceptionToProblemDetailsMapperService"/></remarks>
810
/// </summary>
9-
public sealed class GlobalExceptionHandler(ILogger<GlobalExceptionHandler> logger, IExceptionToProblemDetailsMapperService exceptionToProblemDetailsMapperService) : IExceptionHandler
11+
public sealed class GlobalExceptionHandler(ILogger<GlobalExceptionHandler> logger, IExceptionToProblemDetailsMapperService exceptionToProblemDetailsMapperService)
12+
: IExceptionHandler
1013
{
14+
private static readonly Action<ILogger, string, Exception> LogErrorMessage = Define<string>(LogLevel.Error, eventId: new EventId(id: 0, name: "ERROR"), formatString: "Exception occurred: {Message}");
15+
1116
public async ValueTask<bool> TryHandleAsync(HttpContext httpContext, Exception exception, CancellationToken cancellationToken)
1217
{
13-
logger.LogError(exception, "Exception occurred: {Message}", exception.Message);
18+
LogErrorMessage(logger, exception.Message, exception);
1419

1520
var problemDetails = exceptionToProblemDetailsMapperService.Map(exception, httpContext, null);
1621

src/Futurum.WebApiEndpoint.Micro/WebApiEndpoint.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ private static IEndpointRouteBuilder CreateVersionedEndpointRouteBuilder(IEndpoi
4444
{
4545
var apiVersion = (ApiVersion)webApiEndpointVersion;
4646

47-
var formattedVersion = apiVersion.ToString(configuration.Version.Format);
47+
var formattedVersion = apiVersion.ToString(configuration.Version.Format, new ApiVersionFormatProvider());
4848

4949
return app.NewVersionedApi($"{configuration.Version.Prefix}{formattedVersion}");
5050
}
@@ -82,7 +82,7 @@ private static IEndpointRouteBuilder ConfigureWithWebApiVersionEndpoint(IEndpoin
8282
}
8383
}
8484

85-
private static IEndpointRouteBuilder ApplyVersionedRoute(IEndpointRouteBuilder app, WebApiEndpointConfiguration configuration) =>
85+
private static RouteGroupBuilder ApplyVersionedRoute(IEndpointRouteBuilder app, WebApiEndpointConfiguration configuration) =>
8686
app.MapGroup($"{configuration.Version.Prefix}{{version:apiVersion}}");
8787

8888
private static RouteGroupBuilder ApplySpecificRouteAndTag(IEndpointRouteBuilder endpointRouteBuilder, string route, string tag, WebApiEndpointVersion webApiEndpointVersion)

0 commit comments

Comments
 (0)