From 8507c3b3802b0990c681a7c17c4e4d7ef0fa305d Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 1 Dec 2022 19:19:47 +0800 Subject: Restructure crupest-api. --- .../TodosWebApplicationExtensions.cs | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 docker/crupest-api/CrupestApi/CrupestApi.Todos/TodosWebApplicationExtensions.cs (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Todos/TodosWebApplicationExtensions.cs') 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 -- cgit v1.2.3