Skip to content

Commit 17d7571

Browse files
author
Chris Young
committed
Added service invoker functions
1 parent f7eb94d commit 17d7571

File tree

2 files changed

+80
-0
lines changed

2 files changed

+80
-0
lines changed

src/ArchitectNow.Web/Services/IServiceInvoker.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Net;
23
using System.Threading.Tasks;
34
using Microsoft.AspNetCore.Mvc;
45

@@ -11,5 +12,10 @@ public interface IServiceInvoker
1112
Task<IActionResult> AsyncOkCreated<TResult>(Func<Task<TResult>> serviceCall);
1213
Task<IActionResult> AsyncOkNoContent(Func<Task> serviceCall);
1314
Task<IActionResult> AsyncOkNotFound<TResult>(Func<Task<TResult>> serviceCall);
15+
Task<IActionResult> AsyncOkAccepted<TResult>(string location, Func<Task<TResult>> serviceCall);
16+
Task<IActionResult> AsyncStatusCode<TResult>(HttpStatusCode statusCode, Func<Task<TResult>> serviceCall);
17+
Task<IActionResult> AsyncStatusCode<TResult>(HttpStatusCode statusCode, Func<Task> serviceCall);
18+
Task<IActionResult> AsyncResult<TResult>(Func<Task<TResult>> serviceCall, Func<TResult, ActionResult> createResult );
19+
Task<IActionResult> AsyncResult(Func<Task> serviceCall, Func<ActionResult> createResult );
1420
}
1521
}

src/ArchitectNow.Web/Services/ServiceInvoker.cs

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Net;
34
using System.Threading.Tasks;
45
using Microsoft.AspNetCore.Mvc;
56

@@ -91,5 +92,78 @@ public virtual async Task<IActionResult> AsyncOkNotFound<TResult>(Func<Task<TRes
9192
return _exceptionResultBuilder.Build(exception);
9293
}
9394
}
95+
96+
public virtual async Task<IActionResult> AsyncOkAccepted<TResult>(string location, Func<Task<TResult>> serviceCall)
97+
{
98+
try
99+
{
100+
var result = await serviceCall();
101+
102+
return new AcceptedResult(location, result);
103+
}
104+
catch (Exception exception)
105+
{
106+
return _exceptionResultBuilder.Build(exception);
107+
}
108+
}
109+
110+
public virtual async Task<IActionResult> AsyncStatusCode<TResult>(HttpStatusCode statusCode, Func<Task<TResult>> serviceCall)
111+
{
112+
try
113+
{
114+
var result = await serviceCall();
115+
116+
return new ObjectResult(result)
117+
{
118+
StatusCode = (int)statusCode
119+
};
120+
}
121+
catch (Exception exception)
122+
{
123+
return _exceptionResultBuilder.Build(exception);
124+
}
125+
}
126+
127+
public virtual async Task<IActionResult> AsyncStatusCode<TResult>(HttpStatusCode statusCode, Func<Task> serviceCall)
128+
{
129+
try
130+
{
131+
await serviceCall();
132+
133+
return new StatusCodeResult((int)statusCode);
134+
}
135+
catch (Exception exception)
136+
{
137+
return _exceptionResultBuilder.Build(exception);
138+
}
139+
}
140+
141+
public virtual async Task<IActionResult> AsyncResult<TResult>(Func<Task<TResult>> serviceCall, Func<TResult, ActionResult> createResult )
142+
{
143+
try
144+
{
145+
var result = await serviceCall();
146+
147+
return createResult(result);
148+
}
149+
catch (Exception exception)
150+
{
151+
return _exceptionResultBuilder.Build(exception);
152+
}
153+
}
154+
155+
public virtual async Task<IActionResult> AsyncResult(Func<Task> serviceCall, Func<ActionResult> createResult )
156+
{
157+
try
158+
{
159+
await serviceCall();
160+
161+
return createResult();
162+
}
163+
catch (Exception exception)
164+
{
165+
return _exceptionResultBuilder.Build(exception);
166+
}
167+
}
94168
}
95169
}

0 commit comments

Comments
 (0)