コード例 #1
0
        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);
        }
コード例 #2
0
        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;
        }
コード例 #3
0
 public RequestLogServices(IRequestLogRepository postRepository) : base(postRepository)
 {
 }
コード例 #4
0
 public RequestLogService(IRequestLogRepository requestLogRepository, IAsyncRepository <RequestLog> asyncRequestLogRepository)
 {
     _requestLogRepository      = requestLogRepository;
     _asyncRequestLogRepository = asyncRequestLogRepository;
 }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: DalFactory.cs プロジェクト: ahmedekdawy/LMIS
        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>();
        }
コード例 #7
0
 public RequestLogService(IRequestLogRepository requestLogRepository)
 {
     _requestLogRepository = requestLogRepository;
 }
コード例 #8
0
        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);
            }
        }