Example #1
0
        public async Task CreateAndDelete()
        {
            var all = await localHueClient.GetZones();

            var allLights = await localHueClient.GetLights();

            var firstLight = allLights.Data.First();

            var existing = all.Data.Where(x => x.Metadata?.Name == "unittest").FirstOrDefault();

            Guid?deleteId = null;

            if (existing == null)
            {
                var req = new CreateZone()
                {
                    Type     = "zone",
                    Metadata = new Models.Metadata()
                    {
                        Name = "unittest", Archetype = "other"
                    }
                };
                //req.Children.Add(new ResourceIdentifier
                //{
                //  Rid = firstLight.Id,
                //  Rtype = firstLight.Type!
                //});

                var result = await localHueClient.CreateZone(req);

                Assert.IsNotNull(result);
                Assert.IsFalse(result.HasErrors);

                deleteId = result.Data.First().Rid;
            }

            if (deleteId.HasValue)
            {
                var deleteResult = await localHueClient.DeleteZone(deleteId.Value);

                Assert.IsNotNull(deleteResult);
                Assert.IsFalse(deleteResult.HasErrors);

                Assert.IsTrue(deleteResult.Data.Count == 1);
                Assert.AreEqual(deleteId.Value, deleteResult.Data.First().Rid);
            }
        }
Example #2
0
        public async Task <Zone> CreateZoneAsync(CreateZone zone, CancellationToken cancellationToken = default)
        {
            var json = JsonConvert.SerializeObject(zone, this._jsonSerializerSettings);

            var responseMessage = await this._httpClient.PostAsync($"v1/zones", new StringContent(json), cancellationToken);

            if (!responseMessage.IsSuccessStatusCode)
            {
                var errorMessage = await responseMessage.Content.ReadAsStringAsync();

                throw new HttpException($"{responseMessage.IsSuccessStatusCode} {errorMessage}");
            }

            json = await responseMessage.Content.ReadAsStringAsync();

            var changeResponse = JsonConvert.DeserializeObject <ChangeZoneResponse>(json, this._jsonSerializerSettings);

            return(changeResponse.Zone);
        }
Example #3
0
 public Task <HuePostResponse> CreateZone(CreateZone data) => HuePostRequest(ZoneUrl, data);