Beispiel #1
0
        private static IServiceCollection AddServiceAgents(this IServiceCollection services,
                                                           Assembly callingAssembly,
                                                           Action <ServiceSettingsJsonFile> jsonSetupAction,
                                                           Action <ServiceAgentSettings> settingsSetupAction,
                                                           Action <IServiceProvider, HttpClient> clientAction)
        {
            if (jsonSetupAction == null)
            {
                throw new ArgumentNullException(nameof(jsonSetupAction), $"{nameof(jsonSetupAction)} cannot be null.");
            }

            var serviceSettingsJsonFile = new ServiceSettingsJsonFile();

            jsonSetupAction.Invoke(serviceSettingsJsonFile);

            var serviceAgentSettings = ConfigureServiceAgentSettings(services, serviceSettingsJsonFile);

            if (settingsSetupAction != null)
            {
                settingsSetupAction.Invoke(serviceAgentSettings);
            }

            services.Configure <ServiceAgentSettings>(s =>
            {
                s.GlobalApiKey = serviceAgentSettings.GlobalApiKey;
                foreach (var item in serviceAgentSettings.Services)
                {
                    s.Services.Add(item.Key, item.Value);
                }
            });

            RegisterServices(services, serviceAgentSettings, callingAssembly, clientAction);

            return(services);
        }
Beispiel #2
0
        private static ServiceAgentSettings ConfigureServiceAgentSettings(IServiceCollection services, ServiceSettingsJsonFile serviceSettingsJsonFile)
        {
            var builder = new ConfigurationBuilder().AddJsonFile(serviceSettingsJsonFile.FileName);
            var config  = builder.Build();

            var configReader         = new ServiceSettingsConfigReader();
            var serviceAgentSettings = configReader.ReadConfig(config);

            return(serviceAgentSettings);
        }