Ejemplo n.º 1
0
        //public ApiLogService(IUnitOfWorkFactory unitOfWorkFactory)
        //{
        //    this.unitOfWorkFactory = unitOfWorkFactory;
        //    MapperConfiguration _mapperConfig = new MapperConfiguration(cfg => {
        //        cfg.CreateMap<ApiLogDTO, ApiLog>();
        //    });
        //    _Mapper = _mapperConfig.CreateMapper();

        //    MapperConfiguration _mapperConfig_ToDTO = new MapperConfiguration(cfg => {
        //        cfg.CreateMap<ApiLog, ApiLogDTO>();
        //    });
        //    _Mapper_ToDTO = _mapperConfig_ToDTO.CreateMapper();
        //}

        //Add School (generic and async)
        public async Task <int> AddApiLogAsync(ApiLogDTO modelDTO)
        {
            try
            {
                ApiLog model = _Mapper_ToModel.Map <ApiLogDTO, ApiLog>(modelDTO);

                using (var unitOfWork = unitOfWorkFactory.Create())
                {
                    unitOfWork.ApiLogRepository.Add(model);
                    return(await unitOfWork.SaveChangesAsync());
                }
            }
            catch (Exception ex)
            {
                LogException(ex);
                throw ex;
            }
        }
Ejemplo n.º 2
0
        public void IncomingMessageAsync(ApiLogDTO apiLog)
        {
            apiLog.RequestType = "Request";

            ApiLogService.AddApiLogAsync(apiLog);
        }
Ejemplo n.º 3
0
        public void OutgoingMessageAsync(ApiLogDTO apiLog)
        {
            apiLog.RequestType = "Response";

            ApiLogService.AddApiLogAsync(apiLog);
        }
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request,
                                                                      CancellationToken cancellationToken)
        {
            var requestedMethod = request.Method;
            var userHostAddress = HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : "0.0.0.0";
            var useragent       = request.Headers.UserAgent.ToString();
            var requestMessage  = await request.Content.ReadAsByteArrayAsync();

            var uriAccessed = request.RequestUri.AbsoluteUri;

            var responseHeadersString = new StringBuilder();

            foreach (var header in request.Headers)
            {
                responseHeadersString.Append($"{header.Key}: {String.Join(", ", header.Value)}{Environment.NewLine}");
            }

            var messageLoggingHandler = new MessageLogging();

            var requestLog = new ApiLogDTO()
            {
                Headers         = responseHeadersString.ToString(),
                AbsoluteUri     = uriAccessed,
                Host            = userHostAddress,
                RequestBody     = Encoding.UTF8.GetString(requestMessage),
                UserHostAddress = userHostAddress,
                Useragent       = useragent,
                RequestedMethod = requestedMethod.ToString(),
                StatusCode      = string.Empty,
                TimeUtc         = DateTime.Now
            };

            messageLoggingHandler.IncomingMessageAsync(requestLog);

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

            byte[] responseMessage;
            if (response.IsSuccessStatusCode)
            {
                responseMessage = await response.Content.ReadAsByteArrayAsync();
            }
            else
            {
                responseMessage = Encoding.UTF8.GetBytes(response.ReasonPhrase);
            }

            var responseLog = new ApiLogDTO()
            {
                Headers         = responseHeadersString.ToString(),
                AbsoluteUri     = uriAccessed,
                Host            = userHostAddress,
                RequestBody     = Encoding.UTF8.GetString(responseMessage),
                UserHostAddress = userHostAddress,
                Useragent       = useragent,
                RequestedMethod = requestedMethod.ToString(),
                StatusCode      = string.Empty,
                TimeUtc         = DateTime.Now
            };

            messageLoggingHandler.OutgoingMessageAsync(responseLog);
            return(response);
        }