示例#1
0
        public async ValueTask <HttpRequestLog> Handle(HttpRequest request, CancellationToken cancellationToken = default)
        {
            if (request == null)
            {
                throw new NullReferenceException(nameof(request));
            }

            request.EnableBuffering();

            var logMessage = await CreateLogMessage(cancellationToken);

            if (logMessage == null)
            {
                throw new NullReferenceException(nameof(logMessage));
            }

            if (request.HasFormContentType)
            {
                await _formContentHandler.Handle(request, logMessage, cancellationToken);
            }
            else
            {
                await _bodyHandler.Handle(request.Body, logMessage, cancellationToken);
            }

            return(logMessage);
        }
        public async ValueTask <HttpRequestLog> Handle(HttpRequest request, CancellationToken cancellationToken = default)
        {
            if (request == null)
            {
                throw new NullReferenceException(nameof(request));
            }

            var logMessage = _logMessageFactory.Create(request);

            if (request.HasFormContentType)
            {
                await _formContentHandler.Handle(request, logMessage, cancellationToken);
            }
            else
            {
                var reader = new HttpMessageLogBodyReader(_options.Request.IgnoreContentTypes);

                var body = await reader.ReadAsync(request.Body, request.ContentType, request.ContentLength, cancellationToken);

                logMessage.SetBody(body);
            }

            return(logMessage);
        }