/// <summary> /// Create a new AnalyticsClient with a given configuration, session, environment and URI sender. /// </summary> /// <param name="configuration">Configuration of this Google Analytics Urchin client.</param> /// <param name="sessionManager">Session manager with visitor and session information.</param> /// <param name="environment">Provider of environmental information such as screen resolution.</param> /// <param name="sender">Action to take prepared URIs for Google Analytics and send them on.</param> public UrchinTracker(UrchinConfiguration configuration, SessionManager sessionManager, IEnvironment environment, Action <Uri> sender) { this.sessionManager = sessionManager; this.sender = sender; tracker = new UrchinUriBuilder(configuration, sessionManager, environment); hostName = configuration.HostName; }
/// <summary> /// Create a new AnalyticsClient with a given configuration, session, environment and URI sender. /// </summary> /// <param name="configuration">Configuration of this Google Analytics Urchin client.</param> /// <param name="sessionManager">Session manager with visitor and session information.</param> /// <param name="environment">Provider of environmental information such as screen resolution.</param> /// <param name="sender">Action to take prepared URIs for Google Analytics and send them on.</param> public UrchinTracker(UrchinConfiguration configuration, SessionManager sessionManager, IEnvironment environment, Action<Uri> sender) { this.sessionManager = sessionManager; this.sender = sender; tracker = new UrchinUriBuilder(configuration, sessionManager, environment); hostName = configuration.HostName; }
private static UrchinAnalyticsClient CreateSampleClient(Action<Uri> sender) { var configuration = new UrchinConfiguration("UA-1234-5", "FindHostName"); var sessionManager = new SessionManager(TimeSpan.FromDays(1), null); var environment = new Environment("en-gb"); return new UrchinAnalyticsClient(configuration, sessionManager, environment, sender); }
public void UrchinUriBuilder_GetParameters_For_Configuration_Returns_No_Aip_Value_When_False() { var configuration = new UrchinConfiguration("UA-1234-5", "hostName") { AnonymizeIp = false }; var keys = UrchinUriBuilder.GetParameters(configuration).Select(k => k.Key).ToArray(); CollectionAssert.DoesNotContain(keys, "aip"); }
/// <summary> /// Create a new AnalyticsClient with a given configuration, session, environment and URI sender. /// </summary> /// <param name="configuration">Configuration of this Google Analytics Urchin client.</param> /// <param name="sessionManager">Session manager with visitor and session information.</param> /// <param name="environment">Provider of environmental information such as screen resolution.</param> /// <param name="sender">Action to take prepared URIs for Google Analytics and send them on.</param> public void Configure(UrchinConfiguration configuration, SessionManager sessionManager, IEnvironment environment, Action<Uri> sender) { Debug.Assert(tracker == null); var newTracker = new UrchinTracker(configuration, sessionManager, environment, sender); while (queue.Count > 0) newTracker.Track(queue.Dequeue()); tracker = newTracker; }
public void UrchinTracker_GetParameters_For_Configuration_Returns_Correct_Keys() { var configuration = new UrchinConfiguration("UA-1234-5", "hostName"); var keys = UrchinTracker.GetParameters(configuration).Select(k => k.Key).ToArray(); CollectionAssert.AreEquivalent(new[] { "utmac", "utmhn", "aip" }, keys); }
public void UrchinConfiguration_Constructor_With_Required_Parameters_Sets_Correct_Defaults() { var configuration = new UrchinConfiguration("UA-1234-5", "hostName"); Assert.IsFalse(configuration.CalculateHostNameHash); Assert.IsTrue(configuration.AnonymizeIp); Assert.AreEqual(20, configuration.SessionTimeout.TotalMinutes); Assert.IsFalse(configuration.UseSsl); }
public void UrchinConfiguration_Constructor_With_Required_Parameters_Sets_Correct_Properties() { var sessionTimeout = TimeSpan.FromDays(10); var configuration = new UrchinConfiguration("UA-1234-5", "hostName", sessionTimeout); Assert.AreEqual("UA-1234-5", configuration.AccountId); Assert.AreEqual("hostName", configuration.HostName); Assert.AreEqual(sessionTimeout, configuration.SessionTimeout); }
public void UrchinConfiguration_GetHostNameHash_Returns_Correct_Hash_When_CalculateHostNameHash_Is_True() { var attackPatternConfiguration = new UrchinConfiguration("UA-1234-5", "attackpattern.com") { CalculateHostNameHash = true }; var stickerTalesConfiguration = new UrchinConfiguration("UA-1234-6", "stickertales.com") { CalculateHostNameHash = true }; var damiengConfiguration = new UrchinConfiguration("UA-2345-6", "damieng.com") { CalculateHostNameHash = true }; Assert.AreEqual(162214764, attackPatternConfiguration.GetHostNameHash()); Assert.AreEqual(59641711, stickerTalesConfiguration.GetHostNameHash()); Assert.AreEqual(247163921, damiengConfiguration.GetHostNameHash()); }
/// <summary> /// Create a new AnalyticsClient with a given configuration, session, environment and URI sender. /// </summary> /// <param name="configuration">Configuration of this Google Analytics Urchin client.</param> /// <param name="sessionManager">Session manager with visitor and session information.</param> /// <param name="environment">Provider of environmental information such as screen resolution.</param> /// <param name="sender">Action to take prepared URIs for Google Analytics and send them on.</param> public void Configure(UrchinConfiguration configuration, SessionManager sessionManager, IEnvironment environment, Action <Uri> sender) { Debug.Assert(tracker == null); var newTracker = new UrchinTracker(configuration, sessionManager, environment, sender); while (queue.Count > 0) { newTracker.Track(queue.Dequeue()); } tracker = newTracker; }
/// <summary> /// Get parameters for a given configuration. /// </summary> /// <param name="configuration">Configuration to obtain parameters from.</param> /// <returns>Enumerable of key/value pairs containing parameters for this configuration.</returns> internal static IEnumerable <KeyValuePair <string, string> > GetParameters(UrchinConfiguration configuration) { yield return(KeyValuePair.Create("utmac", configuration.AccountId)); yield return(KeyValuePair.Create("utmhn", configuration.HostName)); if (configuration.AnonymizeIp) { yield return(KeyValuePair.Create("aip", "1")); } }
/// <summary> /// Start CSharpAnalytics by restoring the session state, starting the background sender, /// hooking up events to track and firing the application start event and home page view to analytics. /// Call this just before Window.Current.Activate() in your App.OnLaunched method. /// </summary> /// <param name="configuration">Configuration to use, must at a minimum specify your Google Analytics ID and app name.</param> /// <param name="uploadInterval">How often to upload to the server. Lower times = more traffic but realtime. Defaults to 5 seconds.</param> /// <returns>A Task that will complete once CSharpAnalytics is available.</returns> /// <example>await AutoAnalytics.StartAsync(new Configuration("UA-123123123-1", "myapp.someco.com"));</example> public static async Task StartAsync(UrchinConfiguration configuration, TimeSpan? uploadInterval = null) { Debug.Assert(Client == null); if (Client != null) return; await StartRequesterAsync(uploadInterval ?? TimeSpan.FromSeconds(5)); await RestoreSessionAsync(TimeSpan.FromMinutes(20)); Client = new UrchinAnalyticsClient(configuration, sessionManager, new WindowsStoreEnvironment(), requester.Add); Client.TrackEvent("Start", "ApplicationLifecycle"); Client.TrackPageView("Home", "/"); HookEvents(); }
/// <summary> /// Create new UrchinUriBuilder to prepare URIs for Google's Urchin tracker endpoint. /// </summary> /// <param name="configuration">Configuration of analytics.</param> /// <param name="sessionManager">Session manager.</param> /// <param name="environment">Environment details.</param> public UrchinUriBuilder(UrchinConfiguration configuration, SessionManager sessionManager, IEnvironment environment) { this.sessionManager = sessionManager; this.configuration = configuration; this.environment = environment; }
/// <summary> /// Get parameters for a given configuration. /// </summary> /// <param name="configuration">Configuration to obtain parameters from.</param> /// <returns>Enumerable of key/value pairs containing parameters for this configuration.</returns> internal static IEnumerable<KeyValuePair<string, string>> GetParameters(UrchinConfiguration configuration) { yield return KeyValuePair.Create("utmac", configuration.AccountId); yield return KeyValuePair.Create("utmhn", configuration.HostName); if (configuration.AnonymizeIp) yield return KeyValuePair.Create("aip", "1"); }
public void UrchinConfiguration_Constructor_Throws_ArgumentException_If_AccountID_Does_Not_Have_Two_Numeric_Parts() { var configuration = new UrchinConfiguration("UA-1234", "host"); }
public void CustomVariable_Constructor_Throws_ArgumentOutOfRange_If_Enum_Undefined() { var configuration = new UrchinConfiguration("NO-1234-5", "host"); }
public void UrchinConfiguration_GetHostNameHash_Returns_One_When_CalculateHostNameHash_Is_False() { var attackPatternConfiguration = new UrchinConfiguration("UA-1234-5", "attackpattern.com") { CalculateHostNameHash = false }; Assert.AreEqual(1, attackPatternConfiguration.GetHostNameHash()); }