示例#1
0
        /// <summary>
        /// Track a activity in analytics.
        /// </summary>
        /// <param name="activity">Activity to track in analytics.</param>
        /// <param name="endSession">True if this tracking event should end the session.</param>
        public void Track(IMeasurementActivity activity, bool endSession = false)
        {
            if (activity is AutoTimedEventActivity)
            {
                ((AutoTimedEventActivity)activity).End();
            }

            OnTrack(this, activity);

            var entry = new MeasurementActivityEntry(activity)
            {
                CustomDimensions = customDimensions.ToArray(),
                CustomMetrics    = customMetrics.ToArray(),
                EndSession       = endSession
            };

            customDimensions.Clear();
            customMetrics.Clear();

            if (tracker == null)
            {
                queue.Enqueue(entry);
            }
            else
            {
                tracker.Track(entry);
            }
        }
 /// <summary>
 /// Build an Measurement Protocol URI from an entry containing activity and custom variables.
 /// </summary>
 /// <param name="entry">Entry to build the URI for.</param>
 /// <returns>URI that when requested will track this activity.</returns>
 public Uri BuildUri(MeasurementActivityEntry entry)
 {
     var parameters = BuildParameterList(entry);
     CarryForwardParameters(entry.Activity, parameters);
     var endpoint = configuration.UseSsl ? secureTrackingEndpoint : trackingEndpoint;
     var uriBuilder = new UriBuilder(endpoint) {
         Query = CreateQueryString(parameters),
         Fragment = DateTime.UtcNow.ToString("O")
     };
     return uriBuilder.Uri;
 }
 /// <summary>
 /// Build a list of the parameters required based on configuration, environment, activity, session, custom variables and state.
 /// </summary>
 /// <param name="entry">Entry to build the parameter list for.</param>
 /// <returns>Enumeration of key/value pairs containing the parameters necessary for this request.</returns>
 private ICollection <KeyValuePair <string, string> > BuildParameterList(MeasurementActivityEntry entry)
 {
     return(GetParameters()
            .Concat(GetParameters(environment))
            .Concat(GetParameters(configuration))
            .Concat(GetParameters(sessionManager))
            .Concat(MeasurementActivityParameterBuilder.GetActivityParameters(entry.Activity))
            .Concat(GetParameters(entry.CustomDimensions))
            .Concat(GetParameters(entry.CustomMetrics))
            .ToList());
 }
        /// <summary>
        /// Track an activity in analytics.
        /// </summary>
        /// <param name="entry">MeasurementActivityEntry to track in analytics.</param>
        public void Track(MeasurementActivityEntry entry)
        {
            if (sessionManager.VisitorStatus != VisitorStatus.Active) return;

            CarryForwardLastTransaction(entry.Activity);

            sessionManager.Hit();
            if (entry.EndSession)
                sessionManager.End();

            var trackingUri = uriBuilder.BuildUri(entry);
            sender(trackingUri);
        }
        /// <summary>
        /// Build an Measurement Protocol URI from an entry containing activity and custom variables.
        /// </summary>
        /// <param name="entry">Entry to build the URI for.</param>
        /// <returns>URI that when requested will track this activity.</returns>
        public Uri BuildUri(MeasurementActivityEntry entry)
        {
            var parameters = BuildParameterList(entry);

            CarryForwardParameters(entry.Activity, parameters);
            var endpoint   = configuration.UseSsl ? secureTrackingEndpoint : trackingEndpoint;
            var uriBuilder = new UriBuilder(endpoint)
            {
                Query    = CreateQueryString(parameters),
                Fragment = DateTime.UtcNow.ToString("O")
            };

            return(uriBuilder.Uri);
        }
示例#6
0
        /// <summary>
        /// Track an activity in analytics.
        /// </summary>
        /// <param name="entry">MeasurementActivityEntry to track in analytics.</param>
        public void Track(MeasurementActivityEntry entry)
        {
            if (sessionManager.VisitorStatus != VisitorStatus.Active)
            {
                return;
            }

            CarryForwardLastTransaction(entry.Activity);

            sessionManager.Hit();
            if (entry.EndSession)
            {
                sessionManager.End();
            }

            var trackingUri = uriBuilder.BuildUri(entry);

            sender(trackingUri);
        }
        /// <summary>
        /// Track a activity in analytics.
        /// </summary>
        /// <param name="activity">Activity to track in analytics.</param>
        /// <param name="endSession">True if this tracking event should end the session.</param>
        public void Track(IMeasurementActivity activity, bool endSession = false)
        {
            if (activity is AutoTimedEventActivity)
                ((AutoTimedEventActivity)activity).End();

            OnTrack(this, activity);

            var entry = new MeasurementActivityEntry(activity)
            {
                CustomDimensions = customDimensions.ToArray(),
                CustomMetrics = customMetrics.ToArray(),
                EndSession = endSession
            };

            customDimensions.Clear();
            customMetrics.Clear();

            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">Entry to build the parameter list for.</param>
 /// <returns>Enumeration of key/value pairs containing the parameters necessary for this request.</returns>
 private ICollection<KeyValuePair<string, string>> BuildParameterList(MeasurementActivityEntry entry)
 {
     return GetParameters()
         .Concat(GetParameters(environment))
         .Concat(GetParameters(configuration))
         .Concat(GetParameters(sessionManager))
         .Concat(MeasurementActivityParameterBuilder.GetActivityParameters(entry.Activity))
         .Concat(GetParameters(entry.CustomDimensions))
         .Concat(GetParameters(entry.CustomMetrics))
         .ToList();
 }