/// <summary> /// Build an Urchin style URI from an activity and custom variables. /// </summary> /// <param name="entry">UrchinActivityEntry to create a URI for.</param> /// <returns>Uri that when requested will track this activity.</returns> public Uri BuildUri(UrchinActivityEntry entry) { var parameters = BuildParameterList(entry); CarryForwardParameters(entry.Activity, parameters); var uriBuilder = new UriBuilder(configuration.UseSsl ? secureTrackingEndpoint : trackingEndpoint) { Query = CreateQueryString(parameters) }; return uriBuilder.Uri; }
/// <summary> /// Track an activity in analytics. /// </summary> /// <param name="entry">UrchinActivityEntry to track in analytics.</param> public void Track(UrchinActivityEntry entry) { sessionManager.Hit(); var trackingUri = tracker.BuildUri(entry); sender(trackingUri); if (entry.Activity is PageViewActivity) sessionManager.Referrer = new Uri("http://" + hostName + ((PageViewActivity)entry.Activity).Page); }
/// <summary> /// Build a list of the parameters required based on configuration, environment, activity, session, custom variables and state. /// </summary> /// <param name="entry">UrchinActivityEntry to include in the parameter list.</param> /// <returns>List of key/value pairs containing the parameters necessary for this request.</returns> private List <KeyValuePair <string, string> > BuildParameterList(UrchinActivityEntry entry) { return(GetParameters() .Concat(GetParameters(environment)) .Concat(GetParameters(configuration)) .Concat(GetParameters(sessionManager, configuration.GetHostNameHash())) .Concat(GetParameters(entry.CustomVariables)) .Concat(UrchinActivityParameterBuilder.GetParameters(entry.Activity)) .ToList()); }
/// <summary> /// Track an activity in analytics. /// </summary> /// <param name="entry">UrchinActivityEntry to track in analytics.</param> public void Track(UrchinActivityEntry entry) { sessionManager.Hit(); var trackingUri = tracker.BuildUri(entry); sender(trackingUri); if (entry.Activity is PageViewActivity) { sessionManager.Referrer = new Uri("http://" + hostName + ((PageViewActivity)entry.Activity).Page); } }
/// <summary> /// Build an Urchin style URI from an activity and custom variables. /// </summary> /// <param name="entry">UrchinActivityEntry to create a URI for.</param> /// <returns>Uri that when requested will track this activity.</returns> public Uri BuildUri(UrchinActivityEntry entry) { var parameters = BuildParameterList(entry); CarryForwardParameters(entry.Activity, parameters); var uriBuilder = new UriBuilder(configuration.UseSsl ? secureTrackingEndpoint : trackingEndpoint) { Query = CreateQueryString(parameters) }; return(uriBuilder.Uri); }
/// <summary> /// Track this activity in analytics. /// </summary> /// <param name="activity">Activity to track in analytics.</param> /// <param name="activityCustomVariables">Activity scoped custom variable slots to record for this activity.</param> public void Track(IUrchinActivity activity, CustomVariableSlots activityCustomVariables = null) { if (activity is AutoTimedEventActivity) ((AutoTimedEventActivity)activity).End(); var entry = new UrchinActivityEntry { Activity = activity, CustomVariables = GetFinalCustomVariables(activityCustomVariables) }; if (tracker == null) queue.Enqueue(entry); else tracker.Track(entry); }
/// <summary> /// Track this activity in analytics. /// </summary> /// <param name="activity">Activity to track in analytics.</param> /// <param name="activityCustomVariables">Activity scoped custom variable slots to record for this activity.</param> public void Track(IUrchinActivity activity, CustomVariableSlots activityCustomVariables = null) { if (activity is AutoTimedEventActivity) { ((AutoTimedEventActivity)activity).End(); } var entry = new UrchinActivityEntry { Activity = activity, CustomVariables = GetFinalCustomVariables(activityCustomVariables) }; if (tracker == null) { queue.Enqueue(entry); } else { tracker.Track(entry); } }
/// <summary> /// Build a list of the parameters required based on configuration, environment, activity, session, custom variables and state. /// </summary> /// <param name="entry">UrchinActivityEntry to include in the parameter list.</param> /// <returns>List of key/value pairs containing the parameters necessary for this request.</returns> private List<KeyValuePair<string, string>> BuildParameterList(UrchinActivityEntry entry) { return GetParameters() .Concat(GetParameters(environment)) .Concat(GetParameters(configuration)) .Concat(GetParameters(sessionManager, configuration.GetHostNameHash())) .Concat(GetParameters(entry.CustomVariables)) .Concat(UrchinActivityParameterBuilder.GetParameters(entry.Activity)) .ToList(); }