示例#1
0
        /// <summary>
        /// Initializes a new instance of <see cref="Registry"/>.
        /// </summary>
        /// <param name="settings">Configuration settings for registry initialization.</param>
        /// <param name="stepFactory">A factory to create steps from settings.</param>
        /// <param name="processorFactory">A factory to create processors from settings.</param>
        /// <param name="policyFactory">A factory to create http client policies from settings.</param>
        /// <param name="clientFactory">A factory to create http client configurations from settings.</param>
        /// <param name="logger">The <see cref="ILogger"/> instance to use for logging.</param>
        /// <param name="loggerFactory">The <see cref="ILoggerFactory"/> instance to use for initializing loggers for created objects.</param>
        public Registry(IRegistrySettings settings,
                        IConfigFactory <IStep> stepFactory,
                        IConfigFactory <IProcessor> processorFactory,
                        IConfigFactory <IAsyncPolicy <HttpResponseMessage> > policyFactory,
                        IConfigFactory <ClientConfig> clientFactory, ILogger <Registry> logger,
                        ILoggerFactory loggerFactory)
        {
            _   = settings ?? throw new ArgumentNullException(nameof(settings));
            _   = stepFactory ?? throw new ArgumentNullException(nameof(stepFactory));
            _   = processorFactory ?? throw new ArgumentNullException(nameof(processorFactory));
            _   = policyFactory ?? throw new ArgumentNullException(nameof(policyFactory));
            _   = clientFactory ?? throw new ArgumentNullException(nameof(clientFactory));
            log = logger ?? throw new ArgumentNullException(nameof(logger));
            _   = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));

            InitializeFromSettings(settings, ProcessorsSection, out processors, (s) => processorFactory.Create(s));
            InitializeFromSettings(settings, StepsSection, out steps, (s) => stepFactory.Create(s));
            InitializeFromSettings(settings, PoliciesSection, out policies, (s) => policyFactory.Create(s));
            InitializeFromSettings(settings, ClientsSection, out clients, (s) => clientFactory.Create(s));

            foreach (var policy in policies)
            {
                log.LogDebug("{Policy} added from {Setting}", policy.Value?.GetType()?.Name, policy.Key);
                PolicyRegistry.Add(policy.Key, policy.Value);
            }

            simpleClientFactory = new SimpleHttpClientFactory(clients, loggerFactory.CreateLogger <SimpleHttpClientFactory>());
        }
示例#2
0
        public void before_each_test()
        {
            registrySettings = SystemRegistrySettings.Instance;

            stringKey = Guid.NewGuid().ToString();
            CreateRegistrySetting(stringKey, "Hello, World!");
        }
        public BetterLicense(IClock clock, IRegistrySettings registrySettings, IFileSystem fileSystem)
        {
            this.clock = clock;
            this.registrySettings = registrySettings;
            this.fileSystem = fileSystem;

            Initialize();
        }
示例#4
0
        private void InitializeFromSettings <T>(IRegistrySettings settings, string sectionName,
                                                out IDictionary <string, T> registry, Func <string, T> factory)
        {
            registry = new Dictionary <string, T>();

            if (settings.TryGetSection(sectionName, out IEnumerable <KeyValuePair <string, string> > section))
            {
                log.LogInformation("Adding settings from {ConfigSection}", sectionName);
                foreach (var setting in section)
                {
                    log.LogInformation("Adding {SettingName} from {ConfigSection}", setting.Key, sectionName);
                    registry.Add(setting.Key, factory(setting.Value));
                }
            }
            else
            {
                log.LogError("{ConfigSection} was not found in the configuration file", sectionName);
                throw new InvalidOperationException($"Section '{sectionName}' was not found in the configuration file");
            }
        }