示例#1
0
        public async Task InvokeAsync(HttpContext context, IRequestAnalyzer requestAnalyzer)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            if (requestAnalyzer == null)
            {
                throw new ArgumentNullException("requestAnalyzer");
            }

            if (_config == null)
            {
                throw new Exception("SpeedBumpConfig was not provided");
            }

            if (_config.Enabled)
            {
                var delay = await requestAnalyzer.CalculateMillisecondDelay(context.Request);

                await Task.Delay(delay);
            }
            // TODO
            // forward request to backing service, using internal DNS or lookup service?
        }
 public OfflineApiPortService(IApiCatalogLookup lookup, IRequestAnalyzer requestAnalyzer, ITargetMapper mapper, ICollection <IReportWriter> reportWriters, ITargetNameParser targetNameParser)
 {
     _lookup          = lookup;
     _requestAnalyzer = requestAnalyzer;
     _mapper          = mapper;
     _reportWriters   = reportWriters;
     _defaultTargets  = new HashSet <FrameworkName>(targetNameParser.DefaultTargets);
 }
示例#3
0
 public OfflineApiPortService(IApiCatalogLookup lookup, IRequestAnalyzer requestAnalyzer, ITargetMapper mapper, ICollection <IReportWriter> reportWriters, ITargetNameParser targetNameParser, IApiRecommendations apiRecommendations)
 {
     _lookup             = lookup;
     _requestAnalyzer    = requestAnalyzer;
     _mapper             = mapper;
     _reportWriters      = reportWriters;
     _defaultTargets     = new HashSet <FrameworkName>(targetNameParser.DefaultTargets);
     _searcher           = new StringContainsSearcher(lookup);
     _apiRecommendations = apiRecommendations;
 }