Skip to content

Instantly share code, notes, and snippets.

@mbaersch
Created August 22, 2020 15:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mbaersch/a045ead4f07de9d480c9abeba3e6326f to your computer and use it in GitHub Desktop.
Save mbaersch/a045ead4f07de9d480c9abeba3e6326f to your computer and use it in GitHub Desktop.
//Alle APIs, die wir zum Lesen, Verarbeiten und Weitergeben brauchen, werden hier geladen
const claimRequest = require('claimRequest');
const returnResponse = require('returnResponse');
const getRequestQueryParameter = require('getRequestQueryParameter');
const runContainer = require('runContainer');
const setPixelResponse = require('setPixelResponse');
const getRequestHeader = require('getRequestHeader');
const getRequestPath = require('getRequestPath');
const getRemoteAddress = require('getRemoteAddress');
//Wurde "unser" Endpunkt angesprochen? Wenn ja, sind die Daten für
//diesen Client relevant, sonst tun wir nichts
if (getRequestPath() === '/pagelogger') {
//Wir werden die Daten verarbeiten, kein anderer Client muss diese dann noch bekommen
claimRequest();
//Auslesen der drei erforderlichen Parameterwerte aus der Anfrage
//oder im Fall der url entweder per Parameter oder aus dem Referrer des Aufrufs
//Sonderfall cid: Wir nutzen eine Konstante, wenn diese fehlen sollte
const ref = getRequestQueryParameter('ref');
const url = getRequestQueryParameter('url') || getRequestHeader('Referer');
const cid = getRequestQueryParameter('cid') || 666;
//Exemplarisch "erheben" wir auch den User Agent und die IP, um diese
//allen nutzenden Tags zur Verfügung zu stellen
const ip = getRemoteAddress();
const ua = getRequestHeader('user-agent');
//Daten zusammenstellen, die den Tags zur Verfügung gestellt werden sollen
var event = {event_name : "page_view", page_location : url, client_id : cid,
ip_override : ip, user_agent : ua, page_referrer: ref};
//Container aufrufen und Daten übergeben, danach ein Pixel als Antwort auf den Request senden
runContainer(event, () => {
setPixelResponse();
returnResponse();
});
}
const getAllEventData = require('getAllEventData');
const sendHttpGet = require('sendHttpGet');
const encodeUriComponent = require('encodeUriComponent');
//URL des Trackers aus den Feldern lesen
const serviceUrl = data.endpointUrl;
//Alle Event-Daten lesen (weil wir faul sind)
const eventData = getAllEventData();
//Die beiden verwendeten Datenelemente auslesen
const url = encodeUriComponent(eventData.page_location || "");
const cid = encodeUriComponent(eventData.client_id || "");
//Wenn wenigstens eine URL oder ID da sind, Trackinghit
//senden. Sonst Fehler an Container zurückmelden
if (cid || url) {
sendHttpGet(serviceUrl + '?cid='+cid+'&loc='+url);
data.gtmOnSuccess();
} else data.gtmOnFailure();
<?php
/*************************************************************************************************************/
//logging parameters in a text file in a (too) simple way. do not use like this in a productive environment ;)
/*************************************************************************************************************/
$logfile = "gtm_log.txt";
$loc = $_GET['loc'];
$cid = $_GET['cid'];
if (!isset($cid)) $cid = "---";
if (($loc != "") && ($loc != "undefined")) {
if (!file_exists($logfile)) touch($logfile);
$datetime = date("d.m.Y H:i:s");
$logstring = $datetime."\t$cid\t$loc\n";
file_put_contents($logfile, $logstring, FILE_APPEND );
echo "OK";
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment