Captures a measurement activity and associated data for tracking.
Ejemplo n.º 1
0
 /// <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;
 }
Ejemplo n.º 2
0
 /// <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);
 }
Ejemplo n.º 3
0
 /// <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());
 }
Ejemplo n.º 4
0
        /// <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);
            }
        }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 7
0
        /// <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);
            }
        }
Ejemplo n.º 8
0
 /// <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();
 }