//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; } }
public void IncomingMessageAsync(ApiLogDTO apiLog) { apiLog.RequestType = "Request"; ApiLogService.AddApiLogAsync(apiLog); }
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); }