ImportRequest.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.ComponentModel.Design;
  6. using System.Linq;
  7. using System.Security.Cryptography;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using Windows.Data.Json;
  11. namespace KdanCommon.Mixpanel.Data
  12. {
  13. public class EventData
  14. {
  15. [JsonProperty("event")]
  16. public string Event { get; }
  17. [JsonProperty("properties")]
  18. public Dictionary<string, object> Properties
  19. {
  20. get
  21. {
  22. return GetDictionary();
  23. }
  24. }
  25. private string _distinctId { get; }
  26. private Dictionary<string, object> _customProperties { get; }
  27. public EventData(string eventName, string distinctId, Dictionary<string, object> customProperties = null)
  28. {
  29. Event = eventName;
  30. _distinctId = distinctId;
  31. _customProperties = customProperties;
  32. }
  33. private Dictionary<string, object> GetDictionary()
  34. {
  35. DateTime gtm = new DateTime(1970, 1, 1);
  36. long timeStamp = Convert.ToInt64(((TimeSpan)DateTime.UtcNow.Subtract(gtm)).TotalSeconds);
  37. var properties = new Dictionary<string, object>
  38. {
  39. { "time", timeStamp },
  40. { "distinct_id", _distinctId },
  41. { "$insert_id", Guid.NewGuid().ToString("N") },
  42. };
  43. if (_customProperties != null)
  44. {
  45. foreach (var kvp in _customProperties)
  46. properties.Add(kvp.Key, kvp.Value);
  47. }
  48. return properties;
  49. }
  50. }
  51. public class ProfileData
  52. {
  53. [JsonProperty("token")]
  54. public string Token { get; }
  55. [JsonProperty("$distinct_id")]
  56. public string DistinctId { get; }
  57. [JsonProperty("$set")]
  58. public Dictionary<string, object> Set { get; }
  59. public ProfileData(string projectToken, string distinctId, Dictionary<string, object> customProperties = null)
  60. {
  61. Token = projectToken;
  62. DistinctId = distinctId;
  63. Set = customProperties;
  64. }
  65. }
  66. public class AliasData
  67. {
  68. [JsonProperty("event")]
  69. public string Event { get; set; }
  70. [JsonProperty("properties")]
  71. public Properties Properties { get; set; }
  72. }
  73. public class Properties
  74. {
  75. [JsonProperty("distinct_id")]
  76. public string DistinctId { get; set; }
  77. [JsonProperty("alias")]
  78. public string Alias { get; set; }
  79. [JsonProperty("token")]
  80. public string Token { get; set; }
  81. }
  82. }