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); }
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); }