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());
        }