Skip to content

Commit de5d02c

Browse files
authored
Merge pull request #33 from marcominerva/develop
Create 201 response from non generic Result
2 parents 1e60836 + a2085c0 commit de5d02c

File tree

4 files changed

+37
-0
lines changed

4 files changed

+37
-0
lines changed

src/OperationResults.AspNetCore.Http/HttpContextExtensions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ public static class HttpContextExtensions
77
public static IResult CreateResponse(this HttpContext httpContext, Result result, int? successStatusCode = null)
88
=> result.ToResponse(httpContext, successStatusCode);
99

10+
public static IResult CreateResponse(this HttpContext httpContext, Result result, string? routeName, object? routeValues = null, int? successStatusCode = null)
11+
=> result.ToResponse(httpContext, routeName, routeValues, successStatusCode);
12+
1013
public static IResult CreateResponse<T>(this HttpContext httpContext, Result<T> result, int? successStatusCode = null)
1114
=> result.ToResponse(httpContext, null, null, successStatusCode);
1215

src/OperationResults.AspNetCore.Http/OperationResultExtensions.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,22 @@ public static IResult ToResponse(this Result result, HttpContext httpContext, in
2323
return Problem(httpContext, result.FailureReason, null, result.ErrorMessage, result.ErrorDetail, result.ValidationErrors);
2424
}
2525

26+
public static IResult ToResponse(this Result result, HttpContext httpContext, string? routeName, object? routeValues = null, int? successStatusCode = null)
27+
{
28+
if (result.Success)
29+
{
30+
var routeValueDictionary = new RouteValueDictionary(routeValues);
31+
32+
#if NET6_0
33+
return Results.CreatedAtRoute(routeName, routeValues);
34+
#else
35+
return TypedResults.CreatedAtRoute(routeName, routeValues);
36+
#endif
37+
}
38+
39+
return Problem(httpContext, result.FailureReason, null, result.ErrorMessage, result.ErrorDetail, result.ValidationErrors);
40+
}
41+
2642
public static IResult ToResponse<T>(this Result<T> result, HttpContext httpContext, int? successStatusCode = null)
2743
=> result.ToResponse(httpContext, null, null, successStatusCode);
2844

src/OperationResults.AspNetCore/HttpContextExtensions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ public static class HttpContextExtensions
88
public static IActionResult CreateResponse(this HttpContext httpContext, Result result, int? successStatusCode = null)
99
=> result.ToResponse(httpContext, successStatusCode);
1010

11+
public static IActionResult CreateResponse(this HttpContext httpContext, Result result, string? routeName, object? routeValues = null, int? successStatusCode = null)
12+
=> result.ToResponse(httpContext, routeName, routeValues, successStatusCode);
13+
1114
public static IActionResult CreateResponse<T>(this HttpContext httpContext, Result<T> result, int? successStatusCode = null)
1215
=> result.ToResponse(httpContext, null, null, successStatusCode);
1316

src/OperationResults.AspNetCore/OperationResultExtensions.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,21 @@ public static IActionResult ToResponse(this Result result, HttpContext httpConte
1818
return Problem(httpContext, result.FailureReason, null, result.ErrorMessage, result.ErrorDetail, result.ValidationErrors);
1919
}
2020

21+
public static IActionResult ToResponse(this Result result, HttpContext httpContext, string? routeName, object? routeValues = null, int? successStatusCode = null)
22+
{
23+
if (result.Success)
24+
{
25+
var createdAtRouteResult = new CreatedAtRouteResult(routeName, routeValues, null)
26+
{
27+
StatusCode = successStatusCode.GetValueOrDefault(StatusCodes.Status201Created)
28+
};
29+
30+
return createdAtRouteResult;
31+
}
32+
33+
return Problem(httpContext, result.FailureReason, null, result.ErrorMessage, result.ErrorDetail, result.ValidationErrors);
34+
}
35+
2136
public static IActionResult ToResponse<T>(this Result<T> result, HttpContext httpContext, int? successStatusCode = null)
2237
=> result.ToResponse(httpContext, null, null, successStatusCode);
2338

0 commit comments

Comments
 (0)