public ClientConfigurationModel(ILightClientProvider lightClientProvider) { this.lightClientProvider = lightClientProvider; configuration = new LightClientConfiguration { Id = lightClientProvider.Id }; }
private async Task <Lights> BuildClient( LightClientConfiguration lightClientConfiguration) { if (lightClientProviders == null) { throw new ArgumentException("Light client providers not created. This is likely a threading issue"); } if (lightClientConfiguration.Id == null) { throw new ArgumentException("Must set id for light client"); } var id = lightClientConfiguration.Id; if (!lightClientProviders.TryGetValue(id, out var provider)) { throw new ArgumentException($"Could not find light client with id {id}"); } var clientConfiguration = BuildClientArgs(provider, lightClientConfiguration.Config); var client = await provider.Create(clientConfiguration); var lights = new Lights(client); foreach (var eventConfiguration in lightClientConfiguration.Events ?? Enumerable.Empty <EventConfiguration>()) { var eventId = eventConfiguration.Id; if (eventId == null) { continue; } var register = eventsById[eventId]; var effectConfiguration = eventConfiguration.Effect; if (effectConfiguration == null) { continue; } register(lights, effectConfiguration); } return(lights); }