public override SummaryData GetEventSummaryData(PersistentEvent ev) { if (!ShouldHandle(ev)) return null; dynamic data = new ExpandoObject(); data.SessionId = ev.SessionId; if (ev.IsSessionStart()) { data.Value = ev.Value.GetValueOrDefault(); DateTime? endTime = ev.GetSessionEndTime(); if (endTime.HasValue) data.SessionEnd = endTime; } var identity = ev.GetUserIdentity(); if (identity != null) { if (!String.IsNullOrEmpty(identity.Identity)) data.Identity = identity.Identity; if (!String.IsNullOrEmpty(identity.Name)) data.Name = identity.Name; } return new SummaryData { TemplateKey = "event-session-summary", Data = data }; }
public override SummaryData GetEventSummaryData(PersistentEvent ev) { if (!ShouldHandle(ev)) return null; var stackingTarget = ev.GetStackingTarget(); if (stackingTarget?.Error == null) return null; var data = new Dictionary<string, object> { { "Id", ev.Id }, { "Message", ev.Message } }; AddUserIdentitySummaryData(data, ev.GetUserIdentity()); if (!String.IsNullOrEmpty(stackingTarget.Error.Type)) { data.Add("Type", stackingTarget.Error.Type.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries).Last()); data.Add("TypeFullName", stackingTarget.Error.Type); } if (stackingTarget.Method != null) { data.Add("Method", stackingTarget.Method.Name); data.Add("MethodFullName", stackingTarget.Method.GetFullName()); } var requestInfo = ev.GetRequestInfo(); if (!String.IsNullOrEmpty(requestInfo?.Path)) data.Add("Path", requestInfo.Path); return new SummaryData { TemplateKey = "event-error-summary", Data = data }; }
public override SummaryData GetEventSummaryData(PersistentEvent ev) { if (!ShouldHandle(ev)) return null; var data = new Dictionary<string, object> { { "Source", ev.Source } }; AddUserIdentitySummaryData(data, ev.GetUserIdentity()); return new SummaryData { TemplateKey = "event-feature-summary", Data = data }; }
public override SummaryData GetEventSummaryData(PersistentEvent ev) { var data = new Dictionary<string, object> { { "Message", GetStackTitle(ev) }, { "Source", ev.Source }, { "Type", ev.Type } }; AddUserIdentitySummaryData(data, ev.GetUserIdentity()); return new SummaryData { TemplateKey = "event-summary", Data = data }; }
public override SummaryData GetEventSummaryData(PersistentEvent ev) { if (!ShouldHandle(ev)) return null; var data = new Dictionary<string, object> { { "SessionId", ev.GetSessionId() }, { "Type", ev.Type } }; AddUserIdentitySummaryData(data, ev.GetUserIdentity()); if (ev.IsSessionStart()) { data.Add("Value", ev.Value.GetValueOrDefault()); DateTime? endTime = ev.GetSessionEndTime(); if (endTime.HasValue) data.Add("SessionEnd", endTime); } return new SummaryData { TemplateKey = "event-session-summary", Data = data }; }
public SlackAttachment(PersistentEvent ev) { TimeStamp = ev.Date.ToUnixTimeSeconds(); var ud = ev.GetUserDescription(); var ui = ev.GetUserIdentity(); Text = ud?.Description; string displayName = null; if (!String.IsNullOrEmpty(ui?.Identity)) { displayName = ui.Identity; } if (!String.IsNullOrEmpty(ui?.Name)) { displayName = ui.Name; } if (!String.IsNullOrEmpty(displayName) && !String.IsNullOrEmpty(ud?.EmailAddress)) { displayName = $"{displayName} ({ud.EmailAddress})"; } else if (!String.IsNullOrEmpty(ui?.Identity) && !String.IsNullOrEmpty(ui.Name)) { displayName = $"{ui.Name} ({ui.Identity})"; } if (!String.IsNullOrEmpty(displayName)) { AuthorName = displayName; if (!String.IsNullOrEmpty(ud?.EmailAddress)) { AuthorLink = $"mailto:{ud.EmailAddress}?body={ud.Description}"; //AuthorIcon = $"https://www.gravatar.com/avatar/{ud.EmailAddress.ToMD5()}", } } }
public override SummaryData GetEventSummaryData(PersistentEvent ev) { if (!ShouldHandle(ev)) return null; var error = ev.GetSimpleError(); if (error == null) return null; var data = new Dictionary<string, object> { { "Message", ev.Message } }; AddUserIdentitySummaryData(data, ev.GetUserIdentity()); if (!String.IsNullOrEmpty(error.Type)) { data.Add("Type", error.Type.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries).Last()); data.Add("TypeFullName", error.Type); } var requestInfo = ev.GetRequestInfo(); if (!String.IsNullOrEmpty(requestInfo?.Path)) data.Add("Path", requestInfo.Path); return new SummaryData { TemplateKey = "event-simple-summary", Data = data }; }
public override SummaryData GetEventSummaryData(PersistentEvent ev) { if (!ShouldHandle(ev)) return null; var data = new Dictionary<string, object> { { "Message", ev.Message } }; AddUserIdentitySummaryData(data, ev.GetUserIdentity()); if (!String.IsNullOrWhiteSpace(ev.Source)) { data.Add("Source", ev.Source); var parts = ev.Source.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length > 1 && !String.Equals(ev.Source, parts.Last()) && parts.All(p => p.IsValidIdentifier())) data.Add("SourceShortName", parts.Last()); } object temp; string level = ev.Data.TryGetValue(Event.KnownDataKeys.Level, out temp) ? temp as string : null; if (!String.IsNullOrWhiteSpace(level)) data.Add("Level", level.Trim()); return new SummaryData { TemplateKey = "event-log-summary", Data = data }; }
private async Task<HeartbeatResult> GetHeartbeatAsync(PersistentEvent sessionStart) { string sessionId = sessionStart.GetSessionId(); if (!String.IsNullOrWhiteSpace(sessionId)) { var result = await GetLastHeartbeatActivityUtcAsync($"project:{sessionStart.ProjectId}:heartbeat:{sessionId.ToSHA1()}"); if (result != null) return result; } var user = sessionStart.GetUserIdentity(); if (String.IsNullOrWhiteSpace(user?.Identity)) return null; return await GetLastHeartbeatActivityUtcAsync($"project:{sessionStart.ProjectId}:heartbeat:{user.Identity.ToSHA1()}"); }