public async Task <IHttpActionResult> Get()
        {
            var features =
                await _featureInfoService.GetFeaturesItems().ConfigureAwait(false);

            return(Ok(features));
        }
        public async Task InvalidateCache(string name, bool findDeepInterfacesToInvalidate)
        {
            var featureItems = (await _featureInfoService.GetFeaturesItems().ConfigureAwait(false)).ToList();
            var feature      = featureItems.SingleOrDefault(x => x.FeatureDescriptor.Name.Equals(name, StringComparison.OrdinalIgnoreCase));

            var interfaces = new List <string>();

            GetAllInterfaces(interfaces, featureItems, feature, findDeepInterfacesToInvalidate);

            var switchCacheTasks     = interfaces.Select(x => _cache.Remove(_cache.GetSwitchCacheKey(x)));
            var enumerableCacheTasks = interfaces.Select(x => _cache.Remove(_cache.GetEnumerableCacheKey(x)));

            await Task.WhenAll(switchCacheTasks.Concat(enumerableCacheTasks)).ConfigureAwait(false);
        }
Пример #3
0
        public async Task Dispatch(RequestDispatchContext requestDispatchContext)
        {
            var req = requestDispatchContext.HttpContext.Request;
            var res = requestDispatchContext.HttpContext.Response;

            if (req.Method != "GET")
            {
                res.StatusCode = 405;
                return;
            }

            var settings = new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver(),
                Converters       = new JsonConverter[] { new StringEnumConverter {
                                                             CamelCaseText = true
                                                         } }
            };
            var serialized = JsonConvert.SerializeObject(_featureInfoService.GetFeaturesItems(), settings);

            res.ContentType = "application/json";
            await res.WriteAsync(serialized);
        }