private ConfigInstance Get(Type type, ConfigurationIdentity id)
        {
            var innerDic = innerStore[id.Client.ClientId];

            if (!innerDic.TryGetValue(type, out var config))
            {
                config = ConfigFactory.CreateGenericInstance(type, id);
            }

            return(config);
        }
Beispiel #2
0
        /// <summary>
        /// Gets Configuration
        /// </summary>
        /// <param name="type">Type of configuration to be retrieved</param>
        /// <param name="id">Identity of Configuration requested i.e which client requested the configuration</param>
        /// <returns>ConfigInstance of the type requested</returns>
        public async Task <ConfigInstance> GetAsync(Type type, ConfigurationIdentity id)
        {
            var configId = type.Name;
            var result   = ConfigFactory.CreateGenericInstance(type, id);
            var json     = await storageConnector.GetConfigFileAsync(type.Name, id.Client.ClientId);

            if (!string.IsNullOrWhiteSpace(json))
            {
                result.SetConfiguration(ConfigStorageObjectHelper.ParseConfigurationStoredObject(json, type));
            }
            return(result);
        }
        private static ConfigInstance BuildInstance(ConfigurationIdentity targetConfigurationIdentity, SnapshotTextEntry entry, ConfigurationRegistration configInfo)
        {
            if (configInfo.IsCollection)
            {
                var collectionType        = typeof(IEnumerable <>).MakeGenericType(configInfo.ConfigType);
                var newCollectionInstance = ConfigFactory.CreateGenericCollectionInstance(configInfo.ConfigType, targetConfigurationIdentity);
                newCollectionInstance.SetConfiguration(ConfigStorageObjectHelper.ParseConfigurationStoredObject(entry.ConfigurationJson, collectionType));
                return(newCollectionInstance);
            }
            var newInstance = ConfigFactory.CreateGenericInstance(configInfo.ConfigType, targetConfigurationIdentity);

            newInstance.SetConfiguration(ConfigStorageObjectHelper.ParseConfigurationStoredObject(entry.ConfigurationJson, configInfo.ConfigType));
            return(newInstance);
        }
        private static ConfigInstance BuildConfigInstance(ConfigurationIdentity identity, ConfigurationModel model, object config)
        {
            ConfigInstance instance;

            if (model is ConfigurationOptionModel)
            {
                instance = ConfigFactory.CreateGenericCollectionInstance(model.Type, identity);
            }
            else
            {
                instance = ConfigFactory.CreateGenericInstance(model.Type, identity);
            }
            instance.SetConfiguration(config);
            return(instance);
        }
Beispiel #5
0
        private static ConfigInstance BuildConfigInstance(UpdateConfigurationSetFromJsonUploadCommand command, ConfigurationModel model, object config)
        {
            ConfigInstance instance;

            if (model is ConfigurationOptionModel)
            {
                instance = ConfigFactory.CreateGenericCollectionInstance(model.Type, command.Identity);
            }
            else
            {
                instance = ConfigFactory.CreateGenericInstance(model.Type, command.Identity);
            }
            instance.SetConfiguration(config);
            return(instance);
        }
        /// <summary>
        /// Gets Configuration
        /// </summary>
        /// <param name="type">Type of configuration to be retrieved</param>
        /// <param name="id">Identity of Configuration requested i.e which client requested the configuration</param>
        /// <returns>ConfigInstance of the type requested</returns>
        public async Task <ConfigInstance> GetAsync(Type type, ConfigurationIdentity id)
        {
            var configId   = type.Name;
            var configPath = GetCacheKey(configId, id.ClientId);
            var result     = ConfigFactory.CreateGenericInstance(type, id.ClientId);
            var json       = await memoryCache.GetOrCreateAsync(cachePrefix + configPath, e => {
                e.SetSlidingExpiration(TimeSpan.FromMinutes(5));
                return(storageConnector.GetConfigFileAsync(type.Name, id.ClientId));
            });

            if (!string.IsNullOrWhiteSpace(json))
            {
                result.SetConfiguration(JsonConvert.DeserializeObject(json, type, jsonSerializerSettings));
            }
            return(result);
        }