internal string GetPostData(Events events) { string cachedData = GetCacheData(); string data = ""; string output = ""; if (Config.ApiFormat == "json") data = Utils.SerializeAsJSON(events); else data = Utils.SerializeAsXML(events); if (string.IsNullOrEmpty(cachedData)) { if (Config.ApiFormat == "json") output = "[" + data + "]"; else output = "<?xml version=\"1.0\"?><data>" + data + "</data>"; } else { if (Config.ApiFormat == "json") output += "[" + data; else output += "<?xml version=\"1.0\"?><data>" + data; foreach (string line in cachedData.Split(Environment.NewLine.ToCharArray())) { if (!string.IsNullOrEmpty(line.Trim())) { if (Config.ApiFormat == "json") output += "," + line; else output += line; } } if (Config.ApiFormat == "json") output += "]"; else output += "</data>"; } return output.Replace("&", "%26"); }
internal void SaveCacheToFile(Events events) { string data = ""; if (Config.ApiFormat == "json") data = Utils.SerializeAsJSON(events); else data = Utils.SerializeAsXML(events); data += "\n" + GetCacheData(); Delete(); File.WriteAllText(FileName, Utils.EncodeTo64(data)); File.SetAttributes(FileName, FileAttributes.Hidden); }
public static string SerializeAsXML(Events events) { XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; settings.ConformanceLevel = ConformanceLevel.Fragment; settings.CloseOutput = false; StringBuilder sb = new StringBuilder(); XmlWriter xmlWriter = XmlTextWriter.Create(sb, settings); xmlWriter.WriteStartElement("Events"); foreach (Event e in events) { xmlWriter.WriteStartElement("Event"); foreach (DictionaryEntry de in e) { string name = de.Key as string; var value = de.Value; if (value != null) { xmlWriter.WriteStartElement(name); xmlWriter.WriteCData(value.ToString()); xmlWriter.WriteEndElement(); } else xmlWriter.WriteElementString(name, ""); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); xmlWriter.Close(); return sb.ToString(); }
public static string SerializeAsJSON(Events events) { StringBuilder sb = new StringBuilder(); int i = 0; sb.Append("["); foreach (Event e in events) { sb.Append("{"); int j = 0; foreach (DictionaryEntry de in e) { string name = de.Key as string; var value = de.Value; sb.Append("\"" + name + "\":"); if (value == null) sb.Append("null"); else if (value is string) sb.Append("\"" + value + "\""); else if (value is Version) sb.Append("\"" + value.ToString() + "\""); else sb.Append("\"" + value.ToString() + "\""); if (j++ < e.Count - 1) sb.Append(','); } sb.Append("}"); if (i++ < events.Count - 1) sb.Append(","); } sb.Append("]"); return sb.ToString(); }