Skip to content
This repository has been archived by the owner on Jul 18, 2020. It is now read-only.

Commit

Permalink
Reworked the Messages and removed other old classes.
Browse files Browse the repository at this point in the history
  • Loading branch information
Pascal Pharand committed Jul 21, 2017
1 parent b183fa1 commit 26ffe81
Show file tree
Hide file tree
Showing 11 changed files with 78 additions and 288 deletions.
44 changes: 1 addition & 43 deletions HueLib2/BridgeMessages/Error/Error.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ namespace HueLib2
/// <summary>
/// Error class
/// </summary>
///[DataContract,JsonConverter(typeof(ErrorMessageConverter))]
public class Error
{
/// <summary>
Expand All @@ -36,46 +35,5 @@ public override string ToString()

}

public class ErrorMessage
{
public Error message { get; set; }

}

public class ErrorMessageConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(Error) ? true : false;
}

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JObject obj = serializer.Deserialize<JObject>(reader);
Error err = new Error();
foreach(var o in obj)
{
switch(o.Key)
{
case "type":
err.type = (int)o.Value;
break;
case "address":
err.address = o.Value.ToString();
break;
case "description":
err.description = o.Value.ToString();
break;
}
}

return err;
}

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}


}
8 changes: 6 additions & 2 deletions HueLib2/BridgeMessages/Messages.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ public Messages()
_errors = new List<Error>();
}

public Error LastError => _errors.Count > 0 ? _errors[_errors.Count - 1] : null;
public Success LastSucccess => _success.Count > 0 ? _success[_success.Count - 1] : null;

public List<Success> SuccessMessages
{
get { return _success; }
Expand All @@ -37,9 +40,10 @@ public List<Error> ErrorMessages
public bool AnySuccess => _success.Count > 0;

public bool AllErrors => _errors.Count > 0 && _success.Count == 0;
public bool AllSuccess => _errors.Count == 0 && _success.Count > 1;
public bool AllSuccess => _errors.Count == 0 && _success.Count > 0;

public int Count => SuccessMessages.Count + ErrorMessages.Count;



}
}
48 changes: 40 additions & 8 deletions HueLib2/BridgeMessages/MessagesConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,28 +22,60 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
JArray obj = serializer.Deserialize<JArray>(reader);
foreach (JToken tk in obj)
{
Dictionary<string,JToken> dic = tk.ToObject<Dictionary<string, JToken>>();
foreach(KeyValuePair<string,JToken> d in dic)
JObject jo = tk as JObject;
List<JProperty> jp = jo.Properties().ToList();
foreach (JProperty j in jp)
{
Dictionary<string, JToken> s = d.Value.ToObject<Dictionary<string, JToken>>();
switch (d.Key)
switch (j.Name)
{

case "success":
msg.SuccessMessages.Add(new Success(){ Address = s.Keys.ToArray()[0], value = s[s.Keys.ToArray()[0]].Value<string>()});
msg.SuccessMessages.Add(ProcessSuccess(j.Value));
break;
case "error":

msg.ErrorMessages.Add(new Error() { type = s["type"].Value<int>(), address = s["address"].Value<string>(), description = s["description"].Value<string>()});
msg.ErrorMessages.Add(ProcessError(j.Value));
break;
default:
break;
}
}


}
return msg;
}

private Error ProcessError(JToken token)
{
Error e = new Error();
JObject o = token as JObject;
List<JProperty> p = o.Properties().ToList();
foreach (JProperty prop in p)
{
if (prop.Name == "type")
e.type = prop.Value.Value<int>();
if (prop.Name == "address")
e.address = prop.Value.Value<string>();
if (prop.Name == "description")
e.description = prop.Value.Value<string>();
}

return e;
}

private Success ProcessSuccess(JToken token)
{
Success s = new Success();
JObject o = token as JObject;
List<JProperty> p = o.Properties().ToList();
foreach (JProperty prop in p)
{
s.Address = prop.Name;
s.value = prop.Value.Value<string>();

}
return s;
}

public override bool CanConvert(Type objectType)
{
return objectType == typeof(Messages);
Expand Down
17 changes: 0 additions & 17 deletions HueLib2/BridgeMessages/Success/CreationSuccess.cs

This file was deleted.

19 changes: 0 additions & 19 deletions HueLib2/BridgeMessages/Success/DeletionSuccess.cs

This file was deleted.

4 changes: 4 additions & 0 deletions HueLib2/BridgeMessages/Success/Success.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,9 @@ public class Success
public string Address { get; set; }
public string value { get; set; }

public override string ToString()
{
return $"Success : {Address} => {value}";
}
}
}
146 changes: 0 additions & 146 deletions HueLib2/BridgeMessages/Success/SuccessOld.cs

This file was deleted.

3 changes: 0 additions & 3 deletions HueLib2/HueLib2.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,7 @@
<Compile Include="BridgeMessages\Error\UnkownError.cs" />
<Compile Include="BridgeMessages\Messages.cs" />
<Compile Include="BridgeMessages\MessagesConverter.cs" />
<Compile Include="BridgeMessages\Success\CreationSuccess.cs" />
<Compile Include="BridgeMessages\Success\DeletionSuccess.cs" />
<Compile Include="BridgeMessages\Success\Success.cs" />
<Compile Include="BridgeMessages\Success\SuccessOld.cs" />
<Compile Include="Bridge\Bridge_Settings.cs" />
<Compile Include="Bridge\Bridge_Update.cs" />
<Compile Include="Bridge\Objects\BasicConfig.cs" />
Expand Down
4 changes: 3 additions & 1 deletion HueLib2Test/UnitTest1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ public class UnitTest1
[TestMethod]
public void TestMethod1()
{
Messages msg = Serializer.DeserializeToObject<Messages>("[ { \"success\": { \" / lights\": \"Searching for new devices\" } }, { \"error\": { \"type\": 123 , \"address\": \" resource / parameteraddress \" , \"description\": \"description\" }} ]");
// Messages msg = Serializer.DeserializeToObject<Messages>("[ { \"success\": { \" / lights\": \"Searching for new devices\" } }, { \"error\": { \"type\": 123 , \"address\": \" resource / parameteraddress \" , \"description\": \"description\" }} ]");
Messages msg = Serializer.DeserializeToObject<Messages>("[{\"success\":{\"id\":\"1\"}}]");
Messages msg2 = Serializer.DeserializeToObject<Messages>("[\r\n\t{\"success\":{\"/lights/1/state/bri\":200}},\r\n\t{\"success\":{\"/lights/1/state/on\":true}},\r\n\t{\"success\":{\"/lights/1/state/hue\":50000}}\r\n]");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,11 @@ private void Bridge_OnMessageAdded(object sender, EventArgs e)
{
if (SelectedBridge.lastMessages == null) return;
log.Info(SelectedBridge.lastMessages);
/*if (SelectedBridge.lastMessages.Count > 0)
Lastmessage = SelectedBridge.lastMessages[SelectedBridge.lastMessages.Count - 1].ToString();*/
if (SelectedBridge.lastMessages.Count > 0)
{
Lastmessage = SelectedBridge.lastMessages.LastError?.ToString() ?? SelectedBridge.lastMessages.LastSucccess.ToString();
}

}

private void Bridge_BridgeNotResponding(object sender, EventArgs e)
Expand Down
Loading

0 comments on commit 26ffe81

Please sign in to comment.