private Task Send(HttpRequestAuditLogEntry logEntry) { using var client = _clientFactory.CreateClient(); var content = new StringContent(JsonSerializer.Serialize(logEntry), Encoding.UTF8, "application/json"); return(client.PostAsync(_options.Endpoint, content)); }
private async Task <HttpResponseMessage> SendWithLog(HttpRequestMessage request, CancellationToken cancellationToken) { var logEntry = new HttpRequestAuditLogEntry { Url = request.RequestUri?.AbsoluteUri ?? string.Empty, RequestHeaders = request.Headers.ToDictionary(), RequestBody = request.Content?.ToString() }; try { var response = await base.SendAsync(request, cancellationToken); logEntry = logEntry with { ResponseHeaders = response.Headers.ToDictionary(), ResponseBody = await response.Content.ReadAsStringAsync(cancellationToken), StatusCode = (int)response.StatusCode }; await Send(logEntry); return(response); } catch (Exception e) { logEntry = logEntry with { Error = e.Message }; await Send(logEntry); throw; } }
public async Task <ActionResult> AddEntry(HttpRequestAuditLogEntry request, CancellationToken token) { await _auditLogService.AddLogEntry(AuditLogTypes.HttpRequest, request, token); return(Ok()); }