示例#1
0
 public ClientConfigurationModel(ILightClientProvider lightClientProvider)
 {
     this.lightClientProvider = lightClientProvider;
     configuration            = new LightClientConfiguration
     {
         Id = lightClientProvider.Id
     };
 }
示例#2
0
        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);
        }