Esempio n. 1
0
        private Task <bool> SendToLog(RequestResponseLogMetadata logMetadata)
        {
            new Thread(new ThreadStart(() =>
            {
                LogManager.WriteLog <FileLogger>(Newtonsoft.Json.JsonConvert.SerializeObject(logMetadata), $"{logMetadata.ApiActionName} ( Request-{logMetadata.RequestTimestamp?.ToTimeStamp()} Response-{logMetadata.ResponseTimestamp?.ToTimeStamp()} ).txt");
            })).Start();

            return(Task.FromResult(true));
        }
Esempio n. 2
0
        private RequestResponseLogMetadata BuildRequestMetadata(RequestResponseLogMetadata logMetadata, HttpRequestMessage request)
        {
            var content = request.Content.ReadAsStringAsync();
            var result  = content.Result;

            logMetadata.RequestContent   = result;
            logMetadata.RequestMethod    = request.Method.Method;
            logMetadata.RequestTimestamp = DateTime.Now;
            logMetadata.RequestUri       = request.RequestUri.ToString();

            return(logMetadata);
        }
Esempio n. 3
0
        private RequestResponseLogMetadata BuildResponseMetadata(RequestResponseLogMetadata logMetadata, HttpResponseMessage response)
        {
            var content = response.Content.ReadAsStringAsync();
            var result  = content.Result;

            logMetadata.ResponseContent     = result;
            logMetadata.ResponseStatusCode  = response.StatusCode;
            logMetadata.ResponseTimestamp   = DateTime.Now;
            logMetadata.ResponseContentType = response.Content.Headers.ContentType.MediaType;

            return(logMetadata);
        }
Esempio n. 4
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            var logMetadata = new RequestResponseLogMetadata
            {
                ApiActionName = request.RequestUri.GetApiAction()
            };

            logMetadata = BuildRequestMetadata(logMetadata, request);
            var response = await base.SendAsync(request, cancellationToken);

            logMetadata = BuildResponseMetadata(logMetadata, response);
            await SendToLog(logMetadata);

            return(response);
        }