private JObject GetServiceDocs(RouteOptions route) => _memoryCache.GetOrCreate(route.SwaggerKey, (e) => { SwaggerEndPointOptions endpoint = _swaggerEndPointRepository.GetByKey(route.SwaggerKey); string docs = _downstreamSwaggerDocs.GetSwaggerJsonAsync(route, endpoint).Result; e.SetSlidingExpiration(TimeSpan.FromMinutes(5)); return(JObject.Parse(docs)); });
private (string version, SwaggerEndPointOptions endpoint) GetEndPoint( string path, ISwaggerEndPointProvider swaggerEndPointRepository) { (string Version, string Key)endPointInfo = GetEndPointInfo(path); SwaggerEndPointOptions endPoint = swaggerEndPointRepository.GetByKey(endPointInfo.Key); return(endPointInfo.Version, endPoint); }
private async static Task <RoutesDocumentationProvider> CreateProviderAsync() { IDownstreamSwaggerDocsRepository downstreamSwaggerDocs = Substitute.For <IDownstreamSwaggerDocsRepository>(); ISwaggerEndPointProvider swaggerEndPointRepository = Substitute.For <ISwaggerEndPointProvider>(); IMemoryCache memoryCache = new MemoryCache(Options.Create(new MemoryCacheOptions())); string json = await AssemblyHelper.GetStringFromResourceFileAsync("AggregatesOpenApiResource.json"); downstreamSwaggerDocs.GetSwaggerJsonAsync(Arg.Any <RouteOptions>(), Arg.Any <SwaggerEndPointOptions>()).Returns(json); swaggerEndPointRepository.GetByKey(Arg.Any <string>()).Returns(new SwaggerEndPointOptions()); return(new RoutesDocumentationProvider(downstreamSwaggerDocs, swaggerEndPointRepository, memoryCache)); }