From c53adadcbf93a3b5c1f9c8e2b88bdd0efb122709 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 10 Dec 2022 20:24:59 +0800 Subject: Develop secret api. v25 --- .../CrupestApi/CrupestApi.Commons/Json.cs | 27 ++++++++++++---------- 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Json.cs') diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Json.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Json.cs index 4f5862f..8c4b34d 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Json.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Json.cs @@ -46,35 +46,38 @@ public static class CrupestApiJsonExtensions return services; } - public static async Task WriteJsonAsync(this HttpResponse response, T bodyObject, int statusCode, HttpResponseAction? beforeWriteBody, CancellationToken cancellationToken = default) - { - await response.WriteJsonAsync(bodyObject, statusCode, (context) => - { - beforeWriteBody?.Invoke(context); - return Task.CompletedTask; - }, cancellationToken); - } - - public static async Task WriteJsonAsync(this HttpResponse response, T bodyObject, int statusCode = 200, AsyncHttpResponseAction? beforeWriteBody = null, CancellationToken cancellationToken = default) + public static async Task WriteJsonAsync(this HttpResponse response, T bodyObject, int statusCode = 200, HttpResponseAction? beforeWriteBody = null, CancellationToken cancellationToken = default) { var jsonOptions = response.HttpContext.RequestServices.GetRequiredService>(); byte[] json = JsonSerializer.SerializeToUtf8Bytes(bodyObject, jsonOptions.Value); var byteCount = json.Length; + response.StatusCode = statusCode; response.Headers.ContentType = "application/json; charset=utf-8"; response.Headers.ContentLength = byteCount; if (beforeWriteBody is not null) { - await beforeWriteBody(response); + beforeWriteBody(response); } await response.Body.WriteAsync(json, cancellationToken); } - public static async Task WriteMessageAsync(this HttpResponse response, string message, int statusCode = 200, HttpResponseAction? beforeWriteBody = null, CancellationToken cancellationToken = default) + public static async Task WriteMessageAsync(this HttpResponse response, string message, int statusCode = 400, HttpResponseAction? beforeWriteBody = null, CancellationToken cancellationToken = default) { await response.WriteJsonAsync(new ErrorBody(message), statusCode: statusCode, beforeWriteBody, cancellationToken); } + + public static Task ResponseJsonAsync(this HttpContext context, T bodyObject, int statusCode = 200, HttpResponseAction? beforeWriteBody = null, CancellationToken cancellationToken = default) + { + return context.Response.WriteJsonAsync(bodyObject, statusCode, beforeWriteBody, cancellationToken); + } + + public static Task ResponseMessageAsync(this HttpContext context, string message, int statusCode = 400, HttpResponseAction? beforeWriteBody = null, CancellationToken cancellationToken = default) + { + return context.Response.WriteMessageAsync(message, statusCode, beforeWriteBody, cancellationToken); + } + } -- cgit v1.2.3