aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Todos/TodosWebApplicationExtensions.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-12-01 19:19:47 +0800
committercrupest <crupest@outlook.com>2022-12-02 13:35:35 +0800
commit8507c3b3802b0990c681a7c17c4e4d7ef0fa305d (patch)
treedee523de3ff29067fa0202135a322079b295df4c /docker/crupest-api/CrupestApi/CrupestApi.Todos/TodosWebApplicationExtensions.cs
parent8cd7fef89d0df2742bc777e8ea1efb10aea7c81e (diff)
downloadcrupest-8507c3b3802b0990c681a7c17c4e4d7ef0fa305d.tar.gz
crupest-8507c3b3802b0990c681a7c17c4e4d7ef0fa305d.tar.bz2
crupest-8507c3b3802b0990c681a7c17c4e4d7ef0fa305d.zip
Restructure crupest-api.
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Todos/TodosWebApplicationExtensions.cs')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Todos/TodosWebApplicationExtensions.cs41
1 files changed, 41 insertions, 0 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Todos/TodosWebApplicationExtensions.cs b/docker/crupest-api/CrupestApi/CrupestApi.Todos/TodosWebApplicationExtensions.cs
new file mode 100644
index 0000000..575dc4f
--- /dev/null
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Todos/TodosWebApplicationExtensions.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Text.Json;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+
+namespace CrupestApi.Todos;
+
+public static class TodosWebApplicationExtensions
+{
+ public static WebApplication MapTodos(this WebApplication app, string path)
+ {
+ if (app is null)
+ {
+ throw new ArgumentNullException(nameof(app));
+ }
+
+ app.MapGet(path, async ([FromServices] TodosService todosService) =>
+ {
+ var jsonOptions = new JsonSerializerOptions
+ {
+ PropertyNamingPolicy = JsonNamingPolicy.CamelCase
+ };
+
+ try
+ {
+ var todos = await todosService.GetTodosAsync();
+ return Results.Json(todos, jsonOptions, statusCode: 200);
+ }
+ catch (Exception e)
+ {
+ return Results.Json(new
+ {
+ e.Message
+ }, jsonOptions, statusCode: StatusCodes.Status503ServiceUnavailable);
+ }
+ });
+
+ return app;
+ }
+} \ No newline at end of file