Skip to content

Commit 53c3061

Browse files
authored
Merge pull request #57 from marcominerva/develop
Update Failure Reasons
2 parents 3ab09ef + a561871 commit 53c3061

File tree

9 files changed

+52
-17
lines changed

9 files changed

+52
-17
lines changed

samples/Controllers/OperationResults.Sample/OperationResults.Sample.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9-
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="8.0.4" />
10-
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.1" />
9+
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="8.0.6" />
10+
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
1111
<PackageReference Include="TinyHelpers.AspNetCore" Version="3.1.4" />
1212
</ItemGroup>
1313

samples/MinimalApis/OperationResults.Sample/OperationResults.Sample.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9-
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.4" />
10-
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="8.0.4" />
11-
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.1" />
9+
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.6" />
10+
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="8.0.6" />
11+
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
1212
</ItemGroup>
1313

1414
<ItemGroup>

samples/OperationResults.Sample.DataAccessLayer/OperationResults.Sample.DataAccessLayer.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9-
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.4" />
9+
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.6" />
1010
</ItemGroup>
1111
</Project>

src/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="Nerdbank.GitVersioning" Version="3.6.133" PrivateAssets="All" />
12+
<PackageReference Include="Nerdbank.GitVersioning" Version="3.6.139" PrivateAssets="All" />
1313
</ItemGroup>
1414

1515
</Project>

src/OperationResults.AspNetCore.Http/OperationResultOptions.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ public class OperationResultOptions
1010

1111
public bool UseHttpStatusCodes { get; set; }
1212

13+
public UnmappedFailureReasonBehavior UnmappedFailureReasonBehavior { get; set; }
14+
15+
public int UnmappedFailureReasonStatusCode { get; set; } = StatusCodes.Status500InternalServerError;
16+
1317
public OperationResultOptions()
1418
{
1519
StatusCodesMapping = new Dictionary<int, int>
@@ -30,7 +34,11 @@ internal int GetStatusCode(int failureReason, int? defaultStatusCode = null)
3034
{
3135
if (!StatusCodesMapping.TryGetValue(failureReason, out var statusCode))
3236
{
33-
statusCode = defaultStatusCode.GetValueOrDefault(StatusCodes.Status501NotImplemented);
37+
statusCode = UnmappedFailureReasonBehavior switch
38+
{
39+
UnmappedFailureReasonBehavior.UseDefaultStatusCode => defaultStatusCode.GetValueOrDefault(UnmappedFailureReasonStatusCode),
40+
_ => failureReason
41+
};
3442
}
3543

3644
return statusCode;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace OperationResults.AspNetCore.Http;
2+
3+
public enum UnmappedFailureReasonBehavior
4+
{
5+
UseFailureReason,
6+
UseDefaultStatusCode,
7+
}

src/OperationResults.AspNetCore/OperationResultOptions.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ public class OperationResultOptions
1010

1111
public bool UseHttpStatusCodes { get; set; }
1212

13+
public UnmappedFailureReasonBehavior UnmappedFailureReasonBehavior { get; set; }
14+
15+
public int UnmappedFailureReasonStatusCode { get; set; } = StatusCodes.Status500InternalServerError;
16+
1317
public OperationResultOptions()
1418
{
1519
StatusCodesMapping = new Dictionary<int, int>
@@ -30,7 +34,11 @@ internal int GetStatusCode(int failureReason, int? defaultStatusCode = null)
3034
{
3135
if (!StatusCodesMapping.TryGetValue(failureReason, out var statusCode))
3236
{
33-
statusCode = defaultStatusCode.GetValueOrDefault(StatusCodes.Status501NotImplemented);
37+
statusCode = UnmappedFailureReasonBehavior switch
38+
{
39+
UnmappedFailureReasonBehavior.UseDefaultStatusCode => defaultStatusCode.GetValueOrDefault(UnmappedFailureReasonStatusCode),
40+
_ => failureReason
41+
};
3442
}
3543

3644
return statusCode;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace OperationResults.AspNetCore;
2+
3+
public enum UnmappedFailureReasonBehavior
4+
{
5+
UseFailureReason,
6+
UseDefaultStatusCode,
7+
}

src/OperationResults/FailureReasons.cs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,17 @@
33
public static class FailureReasons
44
{
55
public const int None = 0;
6-
public const int ItemNotFound = 1;
7-
public const int Forbidden = 2;
8-
public const int DatabaseError = 3;
9-
public const int ClientError = 4;
10-
public const int InvalidFile = 5;
11-
public const int Conflict = 6;
12-
public const int Unauthorized = 7;
13-
public const int GenericError = 8;
6+
public const int ClientError = 1;
7+
public const int Unauthorized = 2;
8+
public const int Forbidden = 3;
9+
public const int ItemNotFound = 4;
10+
public const int InvalidRequest = 5;
11+
public const int Timeout = 6;
12+
public const int Conflict = 7;
13+
public const int InvalidFile = 8;
14+
public const int InvalidContent = 9;
15+
public const int DatabaseError = 10;
16+
public const int NetworkError = 11;
17+
public const int ServiceUnavailable = 12;
18+
public const int GenericError = 1000;
1419
}

0 commit comments

Comments
 (0)