dcagent.min.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. !function() {
  2. var e, t, n, r, a, i, o, c, s, u, d, l, p, g, f, m, v, h, I, E, x, S, y;
  3. return S = {localStorage: this.localStorage ? !0 : !1,postMessage: this.postMessage ? !0 : !1}, S.localStorage || (this.localStorage = {setItem: function() {
  4. },getItem: function() {
  5. },removeItem: function() {
  6. }}, this.sessionStorage = {setItem: function() {
  7. },getItem: function() {
  8. },removeItem: function() {
  9. }}), o = this.localStorage, d = this.sessionStorage, y = function() {
  10. var e, t, n;
  11. return e = (new Date).getTime(), t = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx", n = t.replace(/[xy]/g, function(t) {
  12. var n;
  13. return n = (e + 16 * Math.random()) % 16 | 0, e = Math.floor(e / 16), "x" === t ? n.toString(16) : (7 & n | 8).toString(16)
  14. }), n.replace(/-/g, "").toUpperCase()
  15. }, t = {get: function(e) {
  16. var t, n;
  17. return n = "(^|;)\\s*" + e + "=([^;\\s]*)", t = document.cookie.match(new RegExp(n)), t && t.length >= 3 ? decodeURIComponent(t[2]) : null
  18. },set: function(e, t, n, r, a, i) {
  19. var o, c, s, u, d;
  20. return n && (o = new Date, o.setTime(o.getTime() + 864e5 * n)), s = n ? "; expires=" + o.toGMTString() : "", u = "; path=" + (a || "/"), c = r ? "; domain=" + r : "", d = i ? "; secure" : "", document.cookie = e + "=" + encodeURIComponent(t) + s + u + c + d
  21. },remove: function(e, n, r) {
  22. return t.set(e, "", -1, n, r)
  23. }}, v = function(e) {
  24. return "[object Object]" === Object.prototype.toString.call(e)
  25. }, g = Array.prototype.every, g || (g = function(e) {
  26. var t, n, r, a;
  27. for (n = !0, r = 0, a = this.length; a > r; r++)
  28. if (t = this[r], !e(t))
  29. return !1;
  30. return n
  31. }), f = function(e) {
  32. var t, n, r;
  33. for (t in e)
  34. r = e[t], e[t] = r;
  35. return n = arguments.length >= 2 ? [].slice.call(arguments, 1) : [], n.forEach(function(n) {
  36. var a;
  37. a = [];
  38. for (t in n)
  39. r = n[t], a.push(e[t] = r);
  40. return a
  41. }), e
  42. }, x = {API_PATH: "http://rd.gdatacube.net/dc/html5/sync",PROXY: "http://rd.gdatacube.net/dc/html5/whoami",CLIENT_KEY: "dcagent_client_id",VERSION_NUMBER: "9",appId: "",deviceId: "",accountId: "",channel: "",appVer: "",interval: 10,intervalCount: 0,initialized: !1,loginTime: 0,timer: 0}, l = {max: 100,count: 0,excludes: [],isReportAllowed: function(e) {
  43. var t;
  44. return l.count < l.max ? t = g.call(l.excludes, function(t) {
  45. return -1 === e.indexOf(t)
  46. }) : void 0
  47. }}, I = {succ: 0,fail: 0,total: 0}, s = "_DESelf_OSS", h = [], E = function(e, t) {
  48. var n, r, a, i, o, c, u, d;
  49. if (e.data) {
  50. (null != (u = e.data.errors) ? u.length : void 0) > l.max && (e.data.errors = e.data.errors.slice(0, 100)), d = e.data;
  51. for (n in d)
  52. o = d[n], "number" == typeof o && (a[n] = String(o));
  53. if (a = f({headers: m.getBaseSettings()}, e.data), x.debug)
  54. return x.debug(x.API_PATH, a);
  55. if (r = Math.abs(x.onlinetime), !(r > 864e3 || 0 >= r))
  56. return c = new XMLHttpRequest, c.timeout = 3e4, c.open("POST", t || x.API_PATH, !0), c.setRequestHeader("Content-Type", "text/plain; charset=UTF-8"), i = Date.now(), c.onreadystatechange = function(t) {
  57. var n, r, a;
  58. return r = this.status >= 200 && this.status < 300, 4 === this.readyState ? (n = Date.now() - i, a = r && "success" === this.responseText, a ? (I.succ = 1, I.fail = 0, I.total = n) : (I.fail += 1, I.succ = 0, I.total += n), p.updateEvents({eventid: s,labelmap: JSON.stringify(I),duration: "1"}), a ? "function" == typeof e.success ? e.success(t) : void 0 : "function" == typeof e.fail ? e.fail(t) : void 0) : void 0
  59. }, c.ontimeout = function() {
  60. return I.fail += 1, I.succ = 0, I.total += elapsed, p.updateEvents({eventid: s,labelmap: JSON.stringify(I),duration: "1"})
  61. }, c.send(JSON.stringify(a))
  62. }
  63. }, a = "dcagent_client_events", r = "dcagent_client_errors", c = "dcagent_parent_id", e = "dcagent_create_time", u = "dcagent_login_time", i = "dcagent_interval_key", p = {getEvents: function() {
  64. return function() {
  65. var e;
  66. return e = o.getItem(a), e ? JSON.parse(e) : []
  67. }
  68. }(this),getErrors: function() {
  69. return function() {
  70. var e;
  71. return e = o.getItem(r), e ? JSON.parse(e) : []
  72. }
  73. }(this),updateEvents: function() {
  74. return function(e, t) {
  75. var n, r, i, c;
  76. if (null == t && (t = !0), n = p.getEvents(), Array.isArray(e))
  77. for (i = 0, c = e.length; c > i; i++)
  78. r = e[i], n.push(r);
  79. else
  80. n.push(e);
  81. return S.localStorage && t ? o.setItem(a, JSON.stringify(n.slice(0, l.max))) : E({data: {events: n}})
  82. }
  83. }(this),updateErrors: function() {
  84. return function(e) {
  85. var t, n, a, i;
  86. if (t = p.getErrors(), Array.isArray(e))
  87. for (a = 0, i = e.length; i > a; a++)
  88. n = e[a], t.push(n);
  89. else
  90. t.push(e);
  91. return S.localStorage ? o.setItem(r, JSON.stringify(t.slice(0, l.max))) : E({data: {errors: t}})
  92. }
  93. }(this),clear: function() {
  94. return function() {
  95. return o.removeItem(a), o.removeItem(r)
  96. }
  97. }(this)}, m = {set: function(e, n) {
  98. return null == n && (n = y()), localStorage.setItem(e, n), t.set(e, n, 365), n
  99. },get: function(e) {
  100. return localStorage.getItem(e) || t.get(e)
  101. },getBaseSettings: function() {
  102. var t;
  103. if (!x.appId)
  104. throw new Error("InitError: missing appId");
  105. if (!x.accountId)
  106. throw new Error("AccountError: unknown accountId");
  107. if (!x.deviceId)
  108. throw new Error("DeviceError: unknown device");
  109. return t = x.intervalCount * x.interval / 1e3 || 1, {appid: x.appId,accountid: x.accountId,uid: x.deviceId,appver: x.appVer,ver: x.VERSION_NUMBER,referer: document.referrer || "",screen: "" + (parseInt(screen.width) || 0) + "*" + (parseInt(screen.height) || 0),logintime: String(parseInt(x.loginTime / 1e3)),onlinetime: String(t),crtime: m.get(e) || "",domain: document.domain}
  110. },reportOnline: function(e, t, n) {
  111. var r, a, i;
  112. return i = {data: {online: {}}}, i.data.events = e || [], i.data.errors = t || [], n && (i.data.reg = n), a = p.getEvents(), r = p.getErrors(), (a.length || r.length) && (p.clear(), i.data.events = i.data.events.concat(a), i.data.errors = i.data.errors.concat(r), i.data.fail = function() {
  113. return p.updateErrors(r), p.updateEvents(a)
  114. }), E(i)
  115. },injectErrorEvent: function(e) {
  116. return function() {
  117. return e.addEventListener("error", function(e) {
  118. var t, n, r, a, i;
  119. try {
  120. if (l.isReportAllowed(e.filename))
  121. return l.count += 1, r = {}, n = ["colno", "filename", "lineno", "message"], n.forEach(function(t) {
  122. return r[t] = e[t] || "0"
  123. }), r.stack = (null != (a = e.error) ? a.stack : void 0) || "", r.type = (null != (i = e.error) ? i.name : void 0) || "Error", r.timestamp = parseInt(e.timeStamp / 1e3), p.updateErrors(r)
  124. } catch (o) {
  125. return t = o, console.log(t)
  126. }
  127. }, !1)
  128. }
  129. }(this),appendUID: function(e) {
  130. var t, n, r, a, i;
  131. return r = location.hash, t = "!" + e, r ? (i = /![0-9A-Z]{32,128}/gi, n = r.match(i), n ? (a = n[0].slice(1), e === a || m.get(c) || (x.parentId = a, m.set(c, a)), location.href = location.href.replace(i, t)) : location.href += t) : location.href += "#" + t
  132. },getServerUID: function(t) {
  133. var n, r, a;
  134. return S.postMessage ? (n = function(r) {
  135. var a;
  136. return 0 === x.PROXY.indexOf(r.origin) ? (a = JSON.parse(r.data), m.set(e, a.crtime), t(a.id), window.removeEventListener("message", n, !1)) : void 0
  137. }, window.addEventListener("message", n, !1), r = document.createElement("iframe"), r.style.display = "none", r.src = "" + x.PROXY, r.onload = function() {
  138. return this.onload = null, this.parentNode.removeChild(this)
  139. }, a = function() {
  140. return document.body.appendChild(r)
  141. }, document.body ? a() : document.addEventListener("DOMContentLoaded", a, !1)) : t(y())
  142. },sendPV: function(e, t) {
  143. var n, r;
  144. return null == e && (e = location.pathname + location.search), n = {page: encodeURIComponent(e),optime: parseInt(x.initializedOn / 1e3),ottime: parseInt(Date.now() / 1e3),lttime: parseInt(x.loginTime / 1e3)}, r = [{eventid: "_DESelf_PV",labelmap: JSON.stringify(n),duration: "1"}], m.reportOnline(r, null, t)
  145. }}, n = {version: x.VERSION_NUMBER,init: function(e) {
  146. var t, n, r, a;
  147. if (e.errorReport !== !1 && (e.excludes && (l.excludes = l.excludes.concat(e.excludes)), m.injectErrorEvent()), x.initialized)
  148. throw new Error("InitError: initialized already");
  149. if (!e.appId)
  150. throw new Error("InitError: missing argument appId");
  151. return n = ["appId", "accountId", "appVer"], n.forEach(function(t) {
  152. return x[t] = e[t] || ""
  153. }), t = m.get(x.CLIENT_KEY), a = function(t) {
  154. var n, a, o;
  155. return m.set(x.CLIENT_KEY, t), x.deviceId = t, x.accountId || (x.accountId = t), x.debug = e.debug, a = d.getItem(u), a || (a = Date.now(), d.setItem(u, a)), x.loginTime = a, n = d.getItem(i), n || (n = "0", d.setItem(i, n)), x.intervalCount = parseInt(n), x.interval = 1e3 * Math.max(10, parseFloat(e.interval || x.interval)), x.timer = setInterval(function() {
  156. return x.intervalCount += 1, d.setItem(i, x.intervalCount), m.reportOnline()
  157. }, x.interval), x.virus = e.virus === !1 ? 0 : 1, x.virus && m.appendUID(t), x.initializedOn = Date.now(), x.initialized = !0, r && (o = {isact: r,isreg: 1}, x.parentId && (o.parentid = x.parentId), S.localStorage || (o.localstorage = 1)), m.sendPV(null, o)
  158. }, r = t ? 0 : 1, t ? a(t) : m.getServerUID(a)
  159. },onEvent: function(e, t, n) {
  160. var r, a, i;
  161. if (null == t && (t = 0), !e)
  162. throw new Error("ArgumentError: missing eventId");
  163. if (v(n)) {
  164. for (a in n)
  165. i = n[a], n[a] = encodeURIComponent(i);
  166. r = JSON.stringify(n)
  167. } else
  168. r = "";
  169. return p.updateEvents({eventid: e,duration: String(t),labelmap: r})
  170. },onPageView: function(e) {
  171. return m.sendPV(e)
  172. },onPayment: function(e) {
  173. var t;
  174. if (e && e.hasOwnProperty("amount"))
  175. return e.amount = parseFloat(e.amount) || 0, t = {data: {payment: {currencyAmount: e.amount.toFixed(2),currencyType: e.currencyType || "CNY",payType: String(e.payType || ""),iapid: String(e.iapid || ""),orderId: String(e.orderId || ""),payTime: String(e.payTime || "")}}}, E(t, x.API_PATH)
  176. }}, this.DCAgent = n
  177. }();