Ejemplo n.º 1
0
        /// <summary>
        /// Gets a list of all lights that have been discovered by the bridge.
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns>
        /// Returns a list of all lights in the system.
        /// If there are no lights in the system then the bridge will return an empty.
        /// </returns>
        public async Task <IReadOnlyList <HueLight> > GetLightsAsync(CancellationToken cancellationToken = default)
        {
            var response = await _httpClient.GetAsync($"http://{_ipAddress}/api/{UserName}/lights", cancellationToken);

            response.EnsureSuccessStatusCode();

            var json = await response.Content.ReadAsStringAsync();

            var root = JsonConvert.DeserializeObject <JObject>(json);

            var lights = new List <HueLight>(root.Count);

            foreach (var p in root)
            {
                var light = new HueLight(this)
                {
                    Id = p.Key
                };

                JsonConvert.PopulateObject(p.Value.ToString(), light);

                lights.Add(light);
            }

            return(lights);
        }
Ejemplo n.º 2
0
        private async Task PutLightStateAsync(HueLight light, object state, CancellationToken cancellationToken)
        {
            var response = await _httpClient.PutAsync(
                $"http://{_ipAddress}/api/{UserName}/lights/{light.Id}/state",
                JsonContent(state),
                cancellationToken);

            response.EnsureSuccessStatusCode();
        }
Ejemplo n.º 3
0
        private async Task SynchronizeLightAsync(HueLight light, CancellationToken cancellationToken)
        {
            var response = await _httpClient.GetAsync(
                $"http://{_ipAddress}/api/{UserName}/lights/{light.Id}",
                cancellationToken);

            response.EnsureSuccessStatusCode();

            var json = await response.Content.ReadAsStringAsync();

            JsonConvert.PopulateObject(json, light);
        }
Ejemplo n.º 4
0
 internal async Task PutLightStateAndSynchronizeAsync(HueLight light, object state, CancellationToken cancellationToken)
 {
     await PutLightStateAsync(light, state, cancellationToken);
     await SynchronizeLightAsync(light, cancellationToken);
 }