Skip to content

Commit af10bbd

Browse files
authored
Dev (#17)
* - code refactoring: make some internal class and interfaces public to make overriding them via DI easier, rename some classes and variables * - code cleanup and sync namespaces * - add summary info * - add tests for web result endpoints with failed result * - bump version
1 parent 9e3e169 commit af10bbd

File tree

13 files changed

+98
-35
lines changed

13 files changed

+98
-35
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@
1818
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1919
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
2020

21-
<Version>0.6.6</Version>
21+
<Version>0.6.7</Version>
2222
</PropertyGroup>
2323
</Project>

samples/BenchmarkWebApi/Features/MinimalApis/BasicTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace BenchmarkWebApi.Features.RegularEndpoints;
1+
namespace BenchmarkWebApi.Features.MinimalApis;
22

33
internal static class BasicTest
44
{

samples/BenchmarkWebApi/Features/MinimalApis/InProcessTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using ModResults;
66
using ModResults.MinimalApis;
77

8-
namespace BenchmarkWebApi.Features.RegularEndpoints;
8+
namespace BenchmarkWebApi.Features.MinimalApis;
99

1010
public record InProcessTestRequest(Guid Id, [FromBody] InProcessTestRequestBody Body);
1111

samples/BenchmarkWebApi/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using BenchmarkWebApi.Extensions;
2-
using BenchmarkWebApi.Features.RegularEndpoints;
2+
using BenchmarkWebApi.Features.MinimalApis;
33
using ModEndpoints;
44

55
var builder = WebApplication.CreateBuilder(args);

src/ModEndpoints/DependencyInjectionExtensions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ public static IServiceCollection AddModEndpointsFromAssembly(
2323
//WebResultEndpoint components
2424
services.TryAddKeyedSingleton<IResultToResponseMapper, DefaultResultToResponseMapper>(
2525
WebResultEndpointDefinitions.DefaultResultToResponseMapperName);
26-
services.TryAddKeyedSingleton<IPreferredSuccessStatusCodeCache, PreferredSuccessStatusCodeCacheForResult>(
27-
WebResultEndpointDefinitions.PreferredSuccessStatusCodeCacheNameForResult);
28-
services.TryAddKeyedSingleton<IPreferredSuccessStatusCodeCache, PreferredSuccessStatusCodeCacheForResultOfT>(
29-
WebResultEndpointDefinitions.PreferredSuccessStatusCodeCacheNameForResultOfT);
26+
services.TryAddKeyedSingleton<IPreferredSuccessStatusCodeCache, DefaultPreferredSuccessStatusCodeCacheForResult>(
27+
WebResultEndpointDefinitions.DefaultPreferredSuccessStatusCodeCacheNameForResult);
28+
services.TryAddKeyedSingleton<IPreferredSuccessStatusCodeCache, DefaultPreferredSuccessStatusCodeCacheForResultOfT>(
29+
WebResultEndpointDefinitions.DefaultPreferredSuccessStatusCodeCacheNameForResultOfT);
3030
services.TryAddScoped<ILocationStore, DefaultLocationStore>();
3131
services.TryAddSingleton<IResultToResponseMapProvider, DefaultResultToResponseMapProvider>();
3232

src/ModEndpoints/[WebResultEndpoint]/PreferredSuccessStatusCodeCacheForResult.cs renamed to src/ModEndpoints/[WebResultEndpoint]/DefaultPreferredSuccessStatusCodeCacheForResult.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44

55
namespace ModEndpoints;
66

7-
internal class PreferredSuccessStatusCodeCacheForResult : IPreferredSuccessStatusCodeCache
7+
/// <summary>
8+
/// Used to store and retrieve preferred success status codes for Web Result Endpoints without a response model.
9+
/// </summary>
10+
public class DefaultPreferredSuccessStatusCodeCacheForResult : IPreferredSuccessStatusCodeCache
811
{
912
private readonly int?[] _successStatusCodePriorityList =
1013
[

src/ModEndpoints/[WebResultEndpoint]/PreferredSuccessStatusCodeCacheForResultOfT.cs renamed to src/ModEndpoints/[WebResultEndpoint]/DefaultPreferredSuccessStatusCodeCacheForResultOfT.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44

55
namespace ModEndpoints;
66

7-
internal class PreferredSuccessStatusCodeCacheForResultOfT : IPreferredSuccessStatusCodeCache
7+
/// <summary>
8+
/// Used to store and retrieve preferred success status codes for Web Result Endpoints with a response model.
9+
/// </summary>
10+
public class DefaultPreferredSuccessStatusCodeCacheForResultOfT : IPreferredSuccessStatusCodeCache
811
{
912
private readonly int?[] _successStatusCodePriorityList =
1013
[

src/ModEndpoints/[WebResultEndpoint]/DefaultResultToResponseMapper.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using Microsoft.AspNetCore.Http;
2-
using Microsoft.AspNetCore.Http.Metadata;
32
using Microsoft.Extensions.DependencyInjection;
43
using ModResults;
54
using ModResults.MinimalApis;
@@ -23,11 +22,11 @@ public async ValueTask<IResult> ToResponseAsync(
2322

2423
var preferredSuccessStatusCodeCache = context.RequestServices
2524
.GetRequiredKeyedService<IPreferredSuccessStatusCodeCache>(
26-
WebResultEndpointDefinitions.PreferredSuccessStatusCodeCacheNameForResult);
27-
var preferredCode = preferredSuccessStatusCodeCache
25+
WebResultEndpointDefinitions.DefaultPreferredSuccessStatusCodeCacheNameForResult);
26+
var preferredSuccessCode = preferredSuccessStatusCodeCache
2827
.GetStatusCode(context);
2928

30-
switch (preferredCode)
29+
switch (preferredSuccessCode)
3130
{
3231
case StatusCodes.Status204NoContent:
3332
return result.ToResponse();
@@ -73,11 +72,11 @@ public async ValueTask<IResult> ToResponseAsync<TValue>(
7372

7473
var preferredSuccessStatusCodeCache = context.RequestServices
7574
.GetRequiredKeyedService<IPreferredSuccessStatusCodeCache>(
76-
WebResultEndpointDefinitions.PreferredSuccessStatusCodeCacheNameForResultOfT);
77-
var preferredCode = preferredSuccessStatusCodeCache
75+
WebResultEndpointDefinitions.DefaultPreferredSuccessStatusCodeCacheNameForResultOfT);
76+
var preferredSuccessCode = preferredSuccessStatusCodeCache
7877
.GetStatusCode(context);
7978

80-
switch (preferredCode)
79+
switch (preferredSuccessCode)
8180
{
8281
case StatusCodes.Status200OK:
8382
return result.ToResponse();

src/ModEndpoints/[WebResultEndpoint]/IPreferredSuccessStatusCodeCache.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace ModEndpoints;
44

5-
internal interface IPreferredSuccessStatusCodeCache
5+
public interface IPreferredSuccessStatusCodeCache
66
{
77
int? GetStatusCode(HttpContext context);
88
}

src/ModEndpoints/[WebResultEndpoint]/WebResultEndpointDefinitions.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
public static class WebResultEndpointDefinitions
33
{
44
public const string DefaultResultToResponseMapperName = "DefaultResultToResponseMapper";
5+
public const string DefaultPreferredSuccessStatusCodeCacheNameForResult = "DefaultPreferredSuccessStatusCodeCacheForResult";
6+
public const string DefaultPreferredSuccessStatusCodeCacheNameForResultOfT = "DefaultPreferredSuccessStatusCodeCacheForResultOfT";
7+
58
public const string InvalidRouteMessage = "No route matches the supplied values.";
69
public const string HttpContextIsInvalidMessage = "Http context resolved from dependency injection is invalid.";
7-
8-
internal const string PreferredSuccessStatusCodeCacheNameForResult = "PreferredSuccessStatusCodeCacheForResult";
9-
internal const string PreferredSuccessStatusCodeCacheNameForResultOfT = "PreferredSuccessStatusCodeCacheForResultOfT";
1010
}

0 commit comments

Comments
 (0)