/// <summary> /// Modify the specified object in the bridge. /// </summary> /// <typeparam name="T">HueObject (Light,Group,Sensor,Rule,Schedule,Scene)</typeparam> /// <param name="modifiedobject">The new modified object.</param> /// <param name="id">Id of the object.</param> /// <returns>BridgeHttpResult</returns> public async Task <bool> ModifyObjectAsyncTask(IHueObject modifiedobject) { string typename = modifiedobject.GetType().Name.ToLower() + "s"; IHueObject clone = (IHueObject)modifiedobject.Clone(); string url = BridgeUrl + $@"/{typename}/{modifiedobject.Id}"; if (typename == null) { return(false); } HttpResult comres; if (!Virtual) { comres = await HueHttpClient.SendRequestAsyncTask(new Uri(url), WebRequestType.Put, Serializer.ModifyJsonObject(modifiedobject)); if (comres.Success) { LastCommandMessages.AddMessage(Serializer.DeserializeToObject <List <IMessage> >(comres.Data)); return(LastCommandMessages.Success); } } else { LastCommandMessages.AddMessage(new Success() { Address = url, value = $"Modified Virtual object : {modifiedobject.ToString()}" }); return(LastCommandMessages.Success); } BridgeNotResponding?.Invoke(this, new BridgeNotRespondingEventArgs(this, url, WebExceptionStatus.NameResolutionFailure)); return(false); }
/// <summary> /// Create a new object on the bridge. Won't work for Lights. /// </summary> /// <typeparam name="T">HueObject (Light,Group,Sensor,Rule,Schedule,Scene)</typeparam> /// <param name="newobject">New object to create on the bridge.</param> /// <returns>HueObject (Light,Group,Sensor,Rule,Schedule,Scene)</returns> public bool CreateObject(IHueObject newobject) { string typename = newobject.GetType().Name.ToLower() + "s"; IHueObject clone = (IHueObject)newobject.Clone(); string url = BridgeUrl + $@"/{typename}"; HttpResult comres; if (!Virtual) { comres = HueHttpClient.SendRequest(new Uri(url), WebRequestType.Post, Serializer.CreateJsonObject(clone)); if (comres.Success) { LastCommandMessages.AddMessage(Serializer.DeserializeToObject <List <IMessage> >(comres.Data)); return(LastCommandMessages.Success); } } else { LastCommandMessages.AddMessage(new Success() { Address = url, value = $"Created Virtual object : {newobject.ToString()}" }); return(LastCommandMessages.Success); } BridgeNotResponding?.Invoke(this, new BridgeNotRespondingEventArgs(this, url, WebExceptionStatus.NameResolutionFailure)); return(false); }
/// <summary> /// Create a new object on the bridge async. Won't work for Lights. /// </summary> /// <typeparam name="T">HueObject (Light,Group,Sensor,Rule,Schedule,Scene)</typeparam> /// <param name="newobject">New object to create on the bridge.</param> /// <returns>HueObject (Light,Group,Sensor,Rule,Schedule,Scene)</returns> public async Task <bool> CreateObjectAsyncTask(IHueObject newobject) { string typename = newobject.GetHueType(); IHueObject clone = (IHueObject)newobject.Clone(); string url = BridgeUrl + $@"/{typename}"; if (typename == null) { return(false); } CommResult comres; if (!Virtual) { comres = await Comm.SendRequestAsyncTask(new Uri(url), WebRequestType.Post, Serializer.SerializeToJson(ClearNotAllowedCreationProperties(clone))); if (comres.Status == WebExceptionStatus.Success) { LastCommandMessages.AddMessage(Serializer.DeserializeToObject <List <IMessage> >(comres.Data)); return(LastCommandMessages.Success); } } else { LastCommandMessages.AddMessage(new Success() { Address = url, value = $"Created Virtual object : {newobject.ToString()}" }); return(LastCommandMessages.Success); } ProcessCommandFailure(url, comres.Status); return(false); }
/// <summary> /// Modify the specified object in the bridge. /// </summary> /// <typeparam name="T">HueObject (Light,Group,Sensor,Rule,Schedule,Scene)</typeparam> /// <param name="modifiedobject">The new modified object.</param> /// <param name="id">Id of the object.</param> /// <returns>BridgeCommResult</returns> public async Task <bool> ModifyObjectAsyncTask(IHueObject modifiedobject) { string typename = modifiedobject.GetHueType(); IHueObject clone = (IHueObject)modifiedobject.Clone(); string url = BridgeUrl + $@"/{typename}/{modifiedobject.Id}"; if (typename == null) { return(false); } CommResult comres; if (!Virtual) { comres = await Comm.SendRequestAsyncTask(new Uri(url), WebRequestType.Put, Serializer.SerializeToJson(modifiedobject)); if (comres.Status == WebExceptionStatus.Success) { LastCommandMessages.AddMessage(Serializer.DeserializeToObject <List <IMessage> >(comres.Data)); return(LastCommandMessages.Success); } } else { LastCommandMessages.AddMessage(new Success() { Address = url, value = $"Modified Virtual object : {modifiedobject.ToString()}" }); return(LastCommandMessages.Success); } ProcessCommandFailure(url, comres.Status); return(false); }
/// <summary> /// Create a new object on the bridge. Won't work for Lights. /// </summary> /// <typeparam name="T">HueObject (Light,Group,Sensor,Rule,Schedule,Scene)</typeparam> /// <param name="newobject">New object to create on the bridge.</param> /// <returns>HueObject (Light,Group,Sensor,Rule,Schedule,Scene)</returns> public bool CreateObject(IHueObject newobject) { string typename = newobject.GetType().Name.ToLower() + "s"; IHueObject clone = (IHueObject)newobject.Clone(); string url = BridgeUrl + $@"/{typename}"; if (typename == null) { return(false); } CommResult comres; if (!Virtual) { comres = Comm.SendRequest(new Uri(url), WebRequestType.Post, Serializer.CreateJsonObject(clone)); if (comres.Status == WebExceptionStatus.Success) { LastCommandMessages.AddMessage(Serializer.DeserializeToObject <List <IMessage> >(comres.Data)); return(LastCommandMessages.Success); } } else { LastCommandMessages.AddMessage(new Success() { Address = url, value = $"Created Virtual object : {newobject.ToString()}" }); return(LastCommandMessages.Success); } ProcessCommandFailure(url, comres.Status); return(false); }