public static IServerMessage Parse(IJsonEncoder encoder, string json) { if (string.IsNullOrEmpty(json)) { HTTPManager.Logger.Error("MessageFactory", "Parse - called with empty or null string!"); return(null); } if (json.Length == 2 && json == "{}") { return(new KeepAliveMessage()); } IDictionary <string, object> dictionary = null; try { dictionary = encoder.DecodeMessage(json); } catch (Exception ex) { HTTPManager.Logger.Exception("MessageFactory", "Parse - encoder.DecodeMessage", ex); return(null); IL_006f :; } if (dictionary == null) { HTTPManager.Logger.Error("MessageFactory", "Parse - Json Decode failed for json string: \"" + json + "\""); return(null); } IServerMessage serverMessage = null; serverMessage = (IServerMessage)(dictionary.ContainsKey("C") ? new MultiMessage() : (dictionary.ContainsKey("E") ? ((object)new FailureMessage()) : ((object)new ResultMessage()))); serverMessage.Parse(dictionary); return(serverMessage); }
/// <summary> /// When the json string is successfully parsed will return with an IServerMessage implementation. /// </summary> public static IServerMessage Parse(IJsonEncoder encoder, string json) { // Nothing to parse? if (string.IsNullOrEmpty(json)) { HTTPManager.Logger.Error("MessageFactory", "Parse - called with empty or null string!"); return(null); } // We don't have to do further decoding, if it's an empty json object, then it's a KeepAlive message from the server if (json.Length == 2 && json == "{}") { return(new KeepAliveMessage()); } IDictionary <string, object> msg = null; try { // try to decode the json message with the encoder msg = encoder.DecodeMessage(json); } catch (Exception ex) { HTTPManager.Logger.Exception("MessageFactory", "Parse - encoder.DecodeMessage", ex); return(null); } if (msg == null) { HTTPManager.Logger.Error("MessageFactory", "Parse - Json Decode failed for json string: \"" + json + "\""); return(null); } // "C" is for message id IServerMessage result = null; if (!msg.ContainsKey("C")) { // If there are no ErrorMessage in the object, then it was a success if (!msg.ContainsKey("E")) { result = new ResultMessage(); } else { result = new FailureMessage(); } } else { result = new MultiMessage(); } result.Parse(msg); return(result); }
/// <summary> /// When the json string is successfully parsed will return with an IServerMessage implementation. /// </summary> public static IServerMessage Parse(IJsonEncoder encoder, string json) { // Nothing to parse? if (string.IsNullOrEmpty(json)) { HTTPManager.Logger.Error("MessageFactory", "Parse - called with empty or null string!"); return null; } // We don't have to do further decoding, if it's an empty json object, then it's a KeepAlive message from the server if (json.Length == 2 && json == "{}") return new KeepAliveMessage(); IDictionary<string, object> msg = null; try { // try to decode the json message with the encoder msg = encoder.DecodeMessage(json); } catch(Exception ex) { HTTPManager.Logger.Exception("MessageFactory", "Parse - encoder.DecodeMessage", ex); return null; } if (msg == null) { HTTPManager.Logger.Error("MessageFactory", "Parse - Json Decode failed for json string: \"" + json + "\""); return null; } // "C" is for message id IServerMessage result = null; if (!msg.ContainsKey("C")) { // If there are no ErrorMessage in the object, then it was a success if (!msg.ContainsKey("E")) result = new ResultMessage(); else result = new FailureMessage(); } else result = new MultiMessage(); result.Parse(msg); return result; }