EngageEvent CompleteEvent(string path, EngageEvent trackEvent) { if (path != null && _url != path) { NewRootEventId(); trackEvent.RootEventId = _storage.RootEventId; _url = path; } else { trackEvent.RootEventId = _storage.RootEventId; } trackEvent.SessionId = _storage.SessionId; trackEvent.Context = new EngageContext(_organisationId, _productId); var user = _storage.User; if (user != null && trackEvent.User == null) { trackEvent.User = user; } if (trackEvent.Source == null) { trackEvent.Source = _eventBuilder.Source(path); } if (trackEvent.Source.Url == null) { trackEvent.Source.Url = new EngageUrl(path); } if (string.IsNullOrEmpty(trackEvent.Source.Url.PathName)) { trackEvent.Source.Url.PathName = path; } if (trackEvent.Source.Browser == null) { trackEvent.Source.Browser = _eventBuilder.Browser(); } if (trackEvent.Source.Screen == null) { trackEvent.Source.Screen = _eventBuilder.Screen(); } if (trackEvent.Source.Locale == null) { trackEvent.Source.Locale = _eventBuilder.Locale(); } return(trackEvent); }
public void Send(EngageEvent sendEvent) { var data = sendEvent.Build(); try { var content = new StringContent(data, Encoding.UTF8, "application/json"); var response = _httpClient.PostAsync(_eventUrl, content).Result; Util.LogInfo($"Event tracked: {response.IsSuccessStatusCode}"); } catch (HttpRequestException hre) { Util.LogError($"Could not send event to {_eventUrl}, failed with message: {hre.Message}"); Util.LogError($"Data: {data}"); } catch (Exception e) { Util.LogError($"Could not send event to {_eventUrl}, failed with message: {e.Message}"); Util.LogError($"Data: {data}"); } }
public void Track(string path, EngageEvent trackEvent) { var theEvent = CompleteEvent(path, trackEvent); _dispatcher.Send(trackEvent); }
public async Task TrackAsync(string path, EngageEvent trackEvent) { var theEvent = CompleteEvent(path, trackEvent); await _dispatcher.SendAsync(trackEvent); }