public BackgroundRequestLogStore(IRequestLogRepository logRepository, ISemanticLog log) { Guard.NotNull(logRepository, nameof(logRepository)); Guard.NotNull(log, nameof(log)); this.logRepository = logRepository; this.log = log; timer = new CompletionTimer(Intervall, ct => TrackAsync(), Intervall); }
public BackgroundRequestLogStore(IOptions <RequestLogStoreOptions> options, IRequestLogRepository logRepository, ISemanticLog log) { this.options = options.Value; this.logRepository = logRepository; timer = new CompletionTimer(options.Value.WriteIntervall, TrackAsync, options.Value.WriteIntervall); this.log = log; }
public RequestLogServices(IRequestLogRepository postRepository) : base(postRepository) { }
public RequestLogService(IRequestLogRepository requestLogRepository, IAsyncRepository <RequestLog> asyncRequestLogRepository) { _requestLogRepository = requestLogRepository; _asyncRequestLogRepository = asyncRequestLogRepository; }
public async Task InvokeAsync(HttpContext context, ILogger <RateLimitMiddleware> logger, IConnectionProvider connectionProvider, IRequestLogRepository requestLogRepository) { logger.LogTrace("Entered InvokeAsync"); var userIdClaim = context.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid); if (userIdClaim != null) { var userId = int.Parse(userIdClaim.Value); using (var conn = await connectionProvider.GetOpenConnectionAsync()) { var rateLimitStatus = await requestLogRepository.GetRateLimitInfoByUser(userId, conn); if (rateLimitStatus == null) { logger.LogError("Rate limit cannot be established for user {0}", userId); context.Response.StatusCode = StatusCodes.Status500InternalServerError; return; } var remaining = Math.Max(0, (rateLimitStatus.IntervalCallLimit - rateLimitStatus.RequestsThisInterval)); context.Response.Headers.Add("X-RateLimit-Limit", rateLimitStatus.IntervalCallLimit.ToString()); context.Response.Headers.Add("X-RateLimit-Remaining", Math.Max(0, remaining - 1).ToString()); context.Response.Headers.Add("X-RateLimit-Reset", new DateTimeOffset(rateLimitStatus.NextIntervalStart).ToUnixTimeSeconds().ToString()); if (remaining <= 0) { context.Response.StatusCode = StatusCodes.Status429TooManyRequests; context.Response.Headers.Add("Retry-After", ((int)(rateLimitStatus.NextIntervalStart - DateTime.UtcNow).TotalSeconds).ToString()); return; } } } await _next(context); }
static DalFactory() { //Define Ninject Dependency Injection Bindings Kernel.Bind <IGeneralCodeRepository>().To <GeneralCodeRepository>(); Kernel.Bind <ISubCodeRepository>().To <SubCodeRepository>(); Kernel.Bind <IOpportunityRepository>().To <OpportunityRepository>(); Kernel.Bind <IindividualDetailsRepository>().To <IndividualDetailsRepository>(); Kernel.Bind <IEventRepository>().To <EventRepository>(); Kernel.Bind <IJobRepository>().To <JobRepository>(); Kernel.Bind <ITrainingRepository>().To <TrainingRepository>(); Kernel.Bind <IDataServiceRepository>().To <DataServiceRepository>(); Kernel.Bind <IOrganizationContactInfoRepository>().To <OrganizationContactInfoRepository>(); Kernel.Bind <IOrganizationRepository>().To <OrganizationRepository>(); Kernel.Bind <IRequestLogRepository>().To <RequestLogRepository>(); Kernel.Bind <IPortalUsersRepository>().To <PortalUsersRepository>(); Kernel.Bind <INewsRepository>().To <NewsRepository>(); Kernel.Bind <IConfigCenterRepository>().To <ConfigCenterRepository>(); Kernel.Bind <IIndividualRepository>().To <IndividualRepository>(); Kernel.Bind <IIndRepository>().To <IndRepository>(); Kernel.Bind <IOrgRepository>().To <OrgRepository>(); Kernel.Bind <IChatLogRepository>().To <ChatLogRepository>(); Kernel.Bind <IConceptNonFormalTrainingRepository>().To <ConceptNonFormalTrainingRepository>(); Kernel.Bind <ILmisReportsRepository>().To <LmisReportsRepository>(); Kernel.Bind <IObsceneWordsRepository>().To <ObsceneWordsRepository>(); Kernel.Bind <IListOfEmailsRepository>().To <ListOfEmailsRepository>(); Kernel.Bind <IHelpfulLinkRepository>().To <HelpfulLinkRepository>(); Kernel.Bind <IQualificationsRepository>().To <QualificationsRepository>(); Kernel.Bind <IOfficeRepository>().To <OfficeRepository>(); Kernel.Bind <IUnionRepository>().To <UnionRepository>(); Kernel.Bind <IFaqRepository>().To <FaqRepository>(); Kernel.Bind <IConceptsDefinitionsRepository>().To <ConceptsDefinitionsRepository>(); Kernel.Bind <IEmployersTrainingProvidersRepository>().To <EmployersTrainingProvidersRepository>(); Kernel.Bind <IRecruitmentAgenciesRepository>().To <RecruitmentAgenciesRepository>(); //Serve BLL Objects as Singletons GeneralCodeRepo = Kernel.Get <IGeneralCodeRepository>(); SubCodeRepo = Kernel.Get <ISubCodeRepository>(); OpportunityRepo = Kernel.Get <IOpportunityRepository>(); IndividualDetailsRepo = Kernel.Get <IindividualDetailsRepository>(); EventRepo = Kernel.Get <IEventRepository>(); JobRepo = Kernel.Get <IJobRepository>(); TrainingRepo = Kernel.Get <ITrainingRepository>(); DataServiceRepo = Kernel.Get <IDataServiceRepository>(); OrganizationContactInfoRepo = Kernel.Get <IOrganizationContactInfoRepository>(); OrganizationRepo = Kernel.Get <IOrganizationRepository>(); RequestLogRepo = Kernel.Get <IRequestLogRepository>(); PortalUsersRepo = Kernel.Get <IPortalUsersRepository>(); NewsRepo = Kernel.Get <INewsRepository>(); IndividualRepo = Kernel.Get <IIndividualRepository>(); ConfigRepo = Kernel.Get <IConfigCenterRepository>(); IndividualRepo = Kernel.Get <IIndividualRepository>(); IndRepo = Kernel.Get <IIndRepository>(); OrgRepo = Kernel.Get <IOrgRepository>(); ChatLogRepo = Kernel.Get <IChatLogRepository>(); ConceptNonFormalTrainingRepo = Kernel.Get <IConceptNonFormalTrainingRepository>(); LmisReportsRepo = Kernel.Get <ILmisReportsRepository>(); ObsceneWordsRepo = Kernel.Get <IObsceneWordsRepository>(); ListOfEmailsRepo = Kernel.Get <IListOfEmailsRepository>(); HelpfulLinkRepo = Kernel.Get <IHelpfulLinkRepository>(); QualificationsRepo = Kernel.Get <IQualificationsRepository>(); OfficeRepo = Kernel.Get <IOfficeRepository>(); UnionRepo = Kernel.Get <IUnionRepository>(); FaqRepo = Kernel.Get <IFaqRepository>(); ConceptsDefinitionsRepo = Kernel.Get <IConceptsDefinitionsRepository>(); EmployersTrainingProvidersRepo = Kernel.Get <IEmployersTrainingProvidersRepository>(); RecruitmentAgenciesRepo = Kernel.Get <IRecruitmentAgenciesRepository>(); }
public RequestLogService(IRequestLogRepository requestLogRepository) { _requestLogRepository = requestLogRepository; }
public async Task InvokeAsync(HttpContext context, ILogger <RequestLogMiddleware> logger, IRequestLogRepository requestLogRepository, IConnectionProvider connectionProvider) { logger.LogTrace("Entered InvokeAsync"); var sw = new Stopwatch(); sw.Start(); await _next(context); sw.Stop(); var requestLog = new RequestLog(); requestLog.Endpoint = context.Request.PathBase + context.Request.Path; requestLog.IpAddress = context.Connection.RemoteIpAddress; requestLog.ResponseMs = (int)sw.ElapsedMilliseconds; requestLog.HttpMethod = context.Request.Method; requestLog.QueryString = context.Request.QueryString.Value; requestLog.StatusCode = context.Response.StatusCode; var userIdClaim = context.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid); if (userIdClaim != null) { requestLog.UserId = int.Parse(userIdClaim.Value); } using (var conn = await connectionProvider.GetOpenConnectionAsync()) { await requestLogRepository.InsertRequestLog(requestLog, conn); } }