Skip to content

Instantly share code, notes, and snippets.

@alexandrosandre
Last active June 16, 2021 14:41
Show Gist options
  • Save alexandrosandre/9a891e140e330d39756df2fe1ae43f94 to your computer and use it in GitHub Desktop.
Save alexandrosandre/9a891e140e330d39756df2fe1ae43f94 to your computer and use it in GitHub Desktop.
TradeInn Snippet
<script type="text/javascript">
(function(){function a(){try{if(s.setItem("_tp_t","a"),"a"!==s.getItem("_tp_t"))return!1;if(s.removeItem("_tp_t"),"function"!=typeof navigator.sendBeacon)return!1}catch(a){return!1}return!0}function b(){var a=Object.getOwnPropertyDescriptor(HTMLImageElement.prototype,"src").set;Object.defineProperty(HTMLImageElement.prototype,"src",{set:function(b){return e({method:"GET",endpoint:b,protocol:"img"}),a.apply(this,arguments)}});var b=HTMLImageElement.prototype.setAttribute;HTMLImageElement.prototype.setAttribute=function(a,c){return"src"==a.toLowerCase()&&e({method:"GET",endpoint:c,protocol:"img"}),b.apply(this,arguments)}}function c(){var a=v.prototype.open,b=v.prototype.send;v.prototype.open=function(b,c){return this._tpUrl=c,this._tpMethod=b,a.apply(this,arguments)},v.prototype.send=function(a){return e({method:this._tpMethod,endpoint:this._tpUrl,payload:a,protocol:"xhr"}),b.apply(this,arguments)}}function d(){var a=navigator.sendBeacon;navigator.sendBeacon=function(b,c){return e({method:"POST",endpoint:b,payload:c,protocol:"beacon"}),a.apply(this,arguments)}}function e(a){setTimeout(function(){try{var b=o(a.endpoint);if(!b)return;var c=n();return!1===c?(K.push(a),q({m:"Pre queued, queue length = "+K.length}),setTimeout(l,E),!1):i(G,c)?(f(j(a,b,c.sampleRate)),!0):(q({m:"Request ignored (sampling)",mode:G,dict:c}),!0)}catch(b){r({m:"Trackingplan process error",error:b,request:a})}},0)}function f(a){var b=JSON.stringify(a);if(b.length+2>H)return h("["+b+"]",A),void q({m:"Track > Batch Size: "+b.length});var c=L.length+b.length;c>H&&(q({m:"Batch reaching limit: "+c}),g(A)),c=L.length+b.length,q({m:"Queue len: "+c,rawTrack:a}),0!==L.length&&(L+=","),L+=b}function g(a){if(0!=L.length){var b=L;L="",h("["+b+"]",a)}}function h(a,b){function c(a){navigator.sendBeacon(C+x,a)}function d(a){var b=new XMLHttpRequest;b.open("POST",C+x,!0),b.onreadystatechange=function(){if(4===b.readyState)try{q({m:"Parsed",response:JSON.parse(b.response)})}catch(a){}},b.send(a)}q({m:"Sent",rawEvents:JSON.parse(a)});"xhr"===b?d(a):"beacon"===b?c(a):void 0}function i(a,b){switch(a){case"user":return 1===b.isSampledUser;case"track":return Math.random()<1/b.sampleRate;case"all":return!0;case"none":default:return!1;}}function j(a,b,c){return{provider:b,request:{endpoint:a.endpoint,method:a.method,post_payload:a.payload||null},context:{href:t.location.href,hostname:t.location.hostname,user_agent:navigator.userAgent},tp_id:x,source_alias:z,environment:y,sdk:M.sdk,sdk_version:M.sdkVersion,sampling_rate:c,debug:B}}function k(){for(;K.length;){var a=K.shift();e(a)}}function l(){if(!J){var a=new XMLHttpRequest,b=D+"config-"+x+".json";a.onreadystatechange=function(){if(4==this.readyState)try{m(JSON.parse(this.responseText).sample_rate),k()}catch(a){}J=!1},a.open("GET",b,!0),J=!0,a.send()}}function m(a){if(!1===a)return s.removeItem("_trackingplan_sample_rate"),s.removeItem("_trackingplan_sample_rate_ts"),void s.removeItem("_trackingplan_is_sampled_user");var b=Math.random()<1/a?1:0;q({m:"Trackingplan sample rate = "+a+". isSampledUser "+b}),s.setItem("_trackingplan_sample_rate_ts",new Date().getTime()),s.setItem("_trackingplan_sample_rate",a),s.setItem("_trackingplan_is_sampled_user",b)}function n(){var a=s.getItem("_trackingplan_sample_rate_ts");return null!==a&&(parseInt(a)+1e3*F<new Date().getTime()?(q({m:"Trackingplan sample rate expired"}),m(!1),!1):{sampleRate:parseInt(s.getItem("_trackingplan_sample_rate")),isSampledUser:parseInt(s.getItem("_trackingplan_is_sampled_user"))})}function o(a){for(var b in w)if(-1!==a.indexOf(b))return w[b];return!1}function p(b,c){for(var d in c)b[d]=c[d];return b}function q(a){B&&u.log("TP "+x,a)}function r(a){t.console&&u.warn&&u.warn(a)}var s=localStorage,t=window,u=console,v=t.XMLHttpRequest;if(t.Trackingplan)return void r("Trackingplan snippet included twice.");var w={"google-analytics.com":"googleanalytics","analytics.google.com":"googleanalytics","api.segment.io":"segment","api.segment.com":"segment","quantserve.com":"quantserve","api.intercom.io":"intercom","api.amplitude.com":"amplitude","ping.chartbeat.net":"chartbeat","api.mixpanel.com":"mixpanel","kissmetrics.com":"kissmetrics","sb.scorecardresearch.com":"scorecardresearch"},x=null,y="PRODUCTION",z=null,A="xhr",B=!1,C="https://tracks.trackingplan.com/v1/",D="https://config.trackingplan.com/",E=0,F=86400,G="user",H=6e4,I=20,J=!1,K=[],L="",M=t.Trackingplan={sdk:"js",sdkVersion:"1.5.1",init:function(e,f){f=f||{};try{if(!a())throw new Error("Not compatible browser");x=e,y=f.environment||y,z=f.sourceAlias||z,A=f.sendMethod||A,w=p(w,f.customDomains||{}),B=f.debug||B,C=f.tracksEndPoint||C,D=f.configEndPoint||D,E=f.delayConfigDownload||E,F=f.sampleRateTTL||F,G=f.samplingMode||G,H=f.batchSize||H,I=f.batchInterval||I,b(),c(),d(),document.addEventListener("visibilitychange",function(){"hidden"===document.visibilityState&&g("beacon")}),t.addEventListener("pagehide",function(){g("beacon")}),setInterval(function(){g(A)},1e3*I),q({m:"TP init finished",options:f})}catch(a){r({m:"TP init error",error:a})}}}})();
Trackingplan.init("TP322446", {"sourceAlias": window.location.hostname, "customDomains": { "data.tradeinn.com/gelf": "tradeinn_gelf" }});
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment