public static IConfigurationBuilder AddConfigApi(this IConfigurationBuilder configurationBuilder, Dictionary <string, string> environmentConfigApiSchemeAndHosts,
                                                         IServiceCollection serviceCollection,
                                                         int?cacheExpirationTimeInMinutes = null,
                                                         int?cacheRefreshTimeInMinutes    = null,
                                                         string applicationName           = null)
        {
            string environment = Environment.GetEnvironmentVariable(EnvironmentKey) ?? DevelopmentEnvironment;

            environmentConfigApiSchemeAndHosts.TryGetValue(environment, out var configApiSchemeAndHost);

            if (string.IsNullOrEmpty(configApiSchemeAndHost) == true)
            {
                throw new InvalidOperationException($"{nameof(configApiSchemeAndHost)} is empty");
            }

            var correctedApplicationName = applicationName ?? Assembly.GetEntryAssembly().GetName().Name;

            var httpConfigParameters = new HttpConfigParameters
            {
                Environment                  = environment,
                ApiSchemeAndHost             = configApiSchemeAndHost,
                ApplicationName              = correctedApplicationName,
                CacheExpirationTimeInMinutes = cacheExpirationTimeInMinutes,
                CacheRefreshTimeInMinutes    = cacheRefreshTimeInMinutes
            };

            serviceCollection.AddSingleton(httpConfigParameters);
            serviceCollection.AddSingleton <IHttpConfigProvider, HttpConfigProvider>();

            var localServiceProvider = serviceCollection.BuildServiceProvider();

            configurationBuilder.Add(new HttpConfigSource(serviceProvider: localServiceProvider));

            return(configurationBuilder);
        }
Пример #2
0
        public HttpConfigProvider(HttpConfigParameters httpConfigParameters,
                                  IHttpJsonHelperService httpJsonHelperService,
                                  ICacheProvider cacheProvider)
        {
            _configurationReloadToken = new ConfigurationReloadToken();

            _httpConfigParameters  = httpConfigParameters;
            _httpJsonHelperService = httpJsonHelperService;
            _cacheProvider         = cacheProvider;
        }