using System; using System.Collections.Generic; namespace ThinkingData.Analytics { /// /// Preset Properties /// public class TDPresetProperties { /// /// Construct TDPresetProperties instance /// /// preset properties public TDPresetProperties(Dictionary properties) { properties = TDEncodeDate(properties); mPresetProperties = properties; } /// /// Returns Preset Properties /// The key starts with "#", it is not recommended to use it directly as a user properties /// /// preset properties public Dictionary ToDictionary() { return mPresetProperties; } /// /// Application Version Number /// public string AppVersion { get { return (string)(mPresetProperties.ContainsKey("#app_version") ? mPresetProperties["#app_version"] : ""); } } /// /// Application Bundle Identify /// public string BundleId { get { return (string)(mPresetProperties.ContainsKey("#bundle_id") ? mPresetProperties["#bundle_id"] : ""); } } /// /// Device Network Carrier /// public string Carrier { get { return (string)(mPresetProperties.ContainsKey("#carrier") ? mPresetProperties["#carrier"] : ""); } } /// /// Device Identify /// public string DeviceId { get { return (string)(mPresetProperties.ContainsKey("#device_id") ? mPresetProperties["#device_id"] : ""); } } /// /// Device Model Name /// public string DeviceModel { get { return (string)(mPresetProperties.ContainsKey("#device_model") ? mPresetProperties["#device_model"] : ""); } } /// /// Device Hardware Manufacturer /// public string Manufacturer { get { return (string)(mPresetProperties.ContainsKey("#manufacturer") ? mPresetProperties["#manufacturer"] : ""); } } /// /// Device Network Type /// public string NetworkType { get { return (string)(mPresetProperties.ContainsKey("#network_type") ? mPresetProperties["#network_type"] : ""); } } /// /// Device System OS Name /// public string OS { get { return (string)(mPresetProperties.ContainsKey("#os") ? mPresetProperties["#os"] : ""); } } /// /// Device System OS Version Number /// public string OSVersion { get { return (string)(mPresetProperties.ContainsKey("#os_version") ? mPresetProperties["#os_version"] : ""); } } /// /// Screen Height /// public double ScreenHeight { get { return Convert.ToDouble(mPresetProperties.ContainsKey("#screen_height") ? mPresetProperties["#screen_height"] : 0); } } /// /// Screen Width /// public double ScreenWidth { get { return Convert.ToDouble(mPresetProperties.ContainsKey("#screen_width") ? mPresetProperties["#screen_width"] : 0); } } /// /// Device System Language Code /// public string SystemLanguage { get { return (string)(mPresetProperties.ContainsKey("#system_language") ? mPresetProperties["#system_language"] : ""); } } /// /// Time Zone Offset With UTC /// public double ZoneOffset { get { return Convert.ToDouble(mPresetProperties.ContainsKey("#zone_offset") ? mPresetProperties["#zone_offset"] : 0); } } /// /// Application Install Time /// public string InstallTime { get { return (string)(mPresetProperties.ContainsKey("#install_time") ? mPresetProperties["#install_time"] : ""); } } /// /// Device Disk Size /// public string Disk { get { return (string)(mPresetProperties.ContainsKey("#disk") ? mPresetProperties["#disk"] : ""); } } /// /// Device Ram Size /// public string Ram { get { return (string)(mPresetProperties.ContainsKey("#ram") ? mPresetProperties["#ram"] : ""); } } /// /// Device FPS /// public double Fps { get { return Convert.ToDouble(mPresetProperties.ContainsKey("#fps") ? mPresetProperties["#fps"] : 0); } } /// /// Device is an Simulator /// public bool Simulator { get { return (bool)(mPresetProperties.ContainsKey("#simulator") ? mPresetProperties["#simulator"] : false); } } private Dictionary mPresetProperties { get; set; } private Dictionary TDEncodeDate(Dictionary properties) { Dictionary mProperties = new Dictionary(); foreach (KeyValuePair kv in properties) { if (kv.Value is DateTime) { DateTime dateTime = (DateTime)kv.Value; mProperties.Add(kv.Key, dateTime.ToString("yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture)); } else { mProperties.Add(kv.Key, kv.Value); } } return mProperties; } } }