mirror of
https://git.teknik.io/Teknikode/Teknik.git
synced 2023-08-02 14:16:22 +02:00
113 lines
4.3 KiB
C#
113 lines
4.3 KiB
C#
using Piwik.Tracker;
|
|
using System;
|
|
using System.Web;
|
|
using Teknik.Configuration;
|
|
using Teknik.Utilities;
|
|
|
|
namespace Teknik.Piwik
|
|
{
|
|
public static class Tracking
|
|
{
|
|
public static void TrackPageView(HttpRequestBase request, Config config, string title)
|
|
{
|
|
// Handle Piwik Tracking if enabled
|
|
if (config.PiwikConfig.Enabled)
|
|
{
|
|
try
|
|
{
|
|
// Follow Do Not Track
|
|
string doNotTrack = request.Headers["DNT"];
|
|
if (string.IsNullOrEmpty(doNotTrack) || doNotTrack != "1")
|
|
{
|
|
string sub = request.RequestContext.RouteData.Values["sub"].ToString();
|
|
if (string.IsNullOrEmpty(sub))
|
|
{
|
|
sub = request.Url.AbsoluteUri.GetSubdomain();
|
|
}
|
|
if (config.DevEnvironment)
|
|
{
|
|
sub = "dev - " + sub;
|
|
}
|
|
|
|
PiwikTracker.URL = config.PiwikConfig.Url;
|
|
PiwikTracker tracker = new PiwikTracker(config.PiwikConfig.SiteId);
|
|
|
|
// Get Request Info
|
|
string ipAddress = request.ClientIPFromRequest(true);
|
|
tracker.setIp(ipAddress);
|
|
tracker.setTokenAuth(config.PiwikConfig.TokenAuth);
|
|
tracker.setUrl(request.Url.ToString());
|
|
|
|
tracker.setUserAgent(request.UserAgent);
|
|
|
|
// Get browser info
|
|
tracker.setResolution(request.Browser.ScreenPixelsWidth, request.Browser.ScreenPixelsHeight);
|
|
tracker.setBrowserHasCookies(request.Browser.Cookies);
|
|
if (!string.IsNullOrEmpty(request.Headers["Accept-Language"]))
|
|
tracker.setBrowserLanguage(request.Headers["Accept-Language"]);
|
|
BrowserPlugins plugins = new BrowserPlugins();
|
|
plugins.java = request.Browser.JavaApplets;
|
|
tracker.setPlugins(plugins);
|
|
|
|
// Get Referral
|
|
if (request.UrlReferrer != null)
|
|
tracker.setUrlReferrer(request.UrlReferrer.ToString());
|
|
|
|
// Send the tracking request
|
|
tracker.doTrackPageView(string.Format("{0}/{1}", sub, title));
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void TrackDownload(HttpRequestBase request, Config config, string url)
|
|
{
|
|
TrackAction(request, config, url, PiwikTracker.ActionType.download);
|
|
}
|
|
|
|
public static void TrackLink(HttpRequestBase request, Config config, string url)
|
|
{
|
|
TrackAction(request, config, url, PiwikTracker.ActionType.link);
|
|
}
|
|
|
|
private static void TrackAction(HttpRequestBase request, Config config, string url, PiwikTracker.ActionType type)
|
|
{
|
|
// Handle Piwik Tracking if enabled
|
|
if (config.PiwikConfig.Enabled)
|
|
{
|
|
try
|
|
{
|
|
// Follow Do Not Track
|
|
string doNotTrack = request.Headers["DNT"];
|
|
if (string.IsNullOrEmpty(doNotTrack) || doNotTrack != "1")
|
|
{
|
|
PiwikTracker.URL = config.PiwikConfig.Url;
|
|
PiwikTracker tracker = new PiwikTracker(config.PiwikConfig.SiteId);
|
|
|
|
tracker.setUserAgent(request.UserAgent);
|
|
|
|
string ipAddress = request.ClientIPFromRequest(true);
|
|
|
|
tracker.setIp(ipAddress);
|
|
tracker.setTokenAuth(config.PiwikConfig.TokenAuth);
|
|
|
|
// Get Referral
|
|
if (request.UrlReferrer != null)
|
|
tracker.setUrlReferrer(request.UrlReferrer.ToString());
|
|
|
|
tracker.doTrackAction(url, type);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|