/// <summary> /// Sends a GA event and waits for the request to complete. /// </summary> public void TrackEventSynchronously(Session session, string category, string action, string label, long value = 1) { session.Log("Sending GA Event"); var cid = GetInfo.GetOrCreateNewCid(session); var cd = new GACustomDimensions(session, cid); if (cd.productVersion == "0.0.0") { session.Log("Not tracking events when version is 0.0.0"); return; } session.Log("Sending event {0}/{1}/{2} for cid={3} (custom dimension 1: {4})", category, action, label, cid, cd.productVersion); var t = Task.WhenAll( TrackEventAsync(session, cid, category, action, label, cd, value), TrackS3Event(session, cid, cd.sessionID, category, action, label) ); var completed = t.Wait(TimeSpan.FromSeconds(15)); if (!completed) { session.Log("Abandoning tracking event task after timeout."); } }
private async Task <TrackingResult> TrackEventAsync(Session session, string cid, string category, string action, string label, GACustomDimensions gd, long value = 1) { var eventTrackingParameters = new EventTracking { Category = category, Action = action, Label = label, Value = value, }; eventTrackingParameters.ClientId = cid; eventTrackingParameters.SetCustomDimensions(new System.Collections.Generic.Dictionary <int, string> { { 1, gd.productVersion }, { 2, gd.sessionID }, { 3, gd.uiLevel }, { 4, gd.installMode }, }); return(await this._tracker.TrackAsync(eventTrackingParameters)); }