private async Task AuditAsync(HttpContext context, IAuditService auditService) { var statusCode = context.Response.StatusCode; var endpoint = context.GetEndpoint(); var auditModel = new AuditPostModel { StatusCode = statusCode, IsSuccessful = statusCode >= 200 && statusCode < 300, Method = context.Request.Method, Endpoint = endpoint.Metadata?.GetMetadata <HttpMethodAttribute>()?.Template, // Do not display body when it concerns the user endpoints (sensitive data such as passwords // cannot be stored as plaintext) Request = endpoint.DisplayName.Contains("users", StringComparison.CurrentCultureIgnoreCase) ? null : await GetRequestAsync(context), }; _logger.LogInformation($"Attempting to audit model {auditModel.SerializeCamelCase()}."); await auditService.AddAuditTrailAsync(auditModel); }