public WebHookDataContext(Version version, PersistentEvent ev, Organization organization = null, Project project = null, Stack stack = null, bool isNew = false, bool isRegression = false) { if (version == null) throw new ArgumentException("Version cannot be null.", "version"); if (ev == null) throw new ArgumentException("Event cannot be null.", "ev"); Version = version; Organization = organization; Project = project; Stack = stack; Event = ev; IsNew = isNew; IsRegression = isRegression; }
public static PersistentEvent GenerateEvent(string[] organizationIds = null, string[] projectIds = null, string[] stackIds = null, DateTimeOffset? startDate = null, DateTimeOffset? endDate = null, DateTimeOffset? occurrenceDate = null, int maxErrorNestingLevel = 0, bool generateTags = true, bool generateData = true, bool isFixed = false, bool isHidden = false, string[] referenceIds = null) { if (!startDate.HasValue || startDate > DateTimeOffset.Now.AddHours(1)) startDate = DateTimeOffset.Now.AddDays(-30); if (!endDate.HasValue || endDate > DateTimeOffset.Now.AddHours(1)) endDate = DateTimeOffset.Now; var ev = new PersistentEvent { OrganizationId = organizationIds.Random(TestConstants.OrganizationId), ProjectId = projectIds.Random(TestConstants.ProjectId), ReferenceId = referenceIds.Random(), Date = occurrenceDate.HasValue ? occurrenceDate.Value : RandomHelper.GetDateTimeOffset(startDate, endDate), IsFixed = isFixed, IsHidden = isHidden, StackId = stackIds.Random() }; if (generateData) { for (int i = 0; i < RandomHelper.GetRange(1, 5); i++) { string key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 10)); while (ev.Data.ContainsKey(key) || key == Event.KnownDataKeys.Error) key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); ev.Data.Add(key, RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 25))); } } if (generateTags) { for (int i = 0; i < RandomHelper.GetRange(1, 3); i++) { string tag = TestConstants.EventTags.Random(); if (!ev.Tags.Contains(tag)) ev.Tags.Add(tag); } } ev.Type = Event.KnownTypes.Error; // limit error variation so that stacking will occur if (_randomErrors == null) _randomErrors = new List<Error>(Enumerable.Range(1, 25).Select(i => GenerateError(maxErrorNestingLevel))); ev.Data[Event.KnownDataKeys.Error] = _randomErrors.Random(); return ev; }
public static PersistentEvent GenerateEvent(bool generateId = false, string id = null, string organizationId = null, string projectId = null, string stackId = null, DateTime? startDate = null, DateTime? endDate = null, DateTimeOffset? occurrenceDate = null, int nestingLevel = 0, int minimiumNestingLevel = 0, TimeSpan? timeZoneOffset = null, bool generateTags = true, bool generateData = true) { if (!startDate.HasValue) startDate = DateTime.Now.AddDays(-90); if (!endDate.HasValue) endDate = DateTime.Now; var ev = new PersistentEvent { Id = id.IsNullOrEmpty() ? generateId ? ObjectId.GenerateNewId().ToString() : null : id, OrganizationId = organizationId.IsNullOrEmpty() ? TestConstants.OrganizationId : organizationId, ProjectId = projectId.IsNullOrEmpty() ? TestConstants.ProjectIds.Random() : projectId, Date = occurrenceDate.HasValue ? occurrenceDate.Value : new DateTimeOffset(RandomHelper.GetDateTime(startDate, endDate), timeZoneOffset.HasValue ? timeZoneOffset.Value : TimeZoneInfo.Local.BaseUtcOffset) }; if (!stackId.IsNullOrEmpty()) ev.StackId = stackId; if (generateData) { for (int i = 0; i < RandomHelper.GetRange(minimiumNestingLevel, minimiumNestingLevel + 5); i++) { string key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); while (ev.Data.ContainsKey(key)) key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); ev.Data.Add(key, RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 25))); } } if (generateTags) { for (int i = 0; i < RandomHelper.GetRange(minimiumNestingLevel, minimiumNestingLevel + 5); i++) { string tag = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); while (ev.Tags.Contains(tag)) tag = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); ev.Tags.Add(tag); } } ev.Type = Event.KnownTypes.Error; ev.Data[Event.KnownDataKeys.Error] = GenerateError(nestingLevel, minimiumNestingLevel).ToJson(); return ev; }
public PersistentEvent ToEvent() { var ev = new PersistentEvent { Id = Id, OrganizationId = OrganizationId, ProjectId = ProjectId, StackId = ErrorStackId, Type = Code == "404" ? Event.KnownTypes.NotFound : Event.KnownTypes.Error, Date = OccurrenceDate, IsFixed = IsFixed, IsHidden = IsHidden, Message = Message }; ev.Tags.AddRange(Tags); var error = new Exceptionless.Models.Data.Error { Message = Message, Type = Type, Code = Code }; if (StackTrace != null && StackTrace.Count > 0) error.StackTrace = StackTrace.ToStackTrace(); if (TargetMethod != null) error.TargetMethod = TargetMethod.ToMethod(); if (Modules != null && Modules.Count > 0) error.Modules = Modules.ToModules(); if (Inner != null) error.Inner = Inner.ToInnerError(); object traceLog; if (ExtendedData != null && ExtendedData.TryGetValue("TraceLog", out traceLog)) { ev.Data[Event.KnownDataKeys.TraceLog] = traceLog; ExtendedData.Remove("TraceLog"); } if (ExtendedData != null && ExtendedData.Count > 0) error.Data.AddRange(ExtendedData.ToData()); // TODO: __ExceptionInfo ev.Data[Event.KnownDataKeys.Error] = error; if (!String.IsNullOrEmpty(UserEmail) || !String.IsNullOrEmpty(UserDescription)) ev.SetUserDescription(UserEmail, UserDescription); if (!String.IsNullOrEmpty(UserName)) ev.SetUserIdentity(UserName); if (RequestInfo != null) ev.Data[Event.KnownDataKeys.RequestInfo] = RequestInfo.ToRequestInfo(); if (EnvironmentInfo != null) ev.Data[Event.KnownDataKeys.EnvironmentInfo] = EnvironmentInfo.ToEnvironmentInfo(); return ev; }
public EventContext(PersistentEvent ev) { Event = ev; StackSignatureData = new Dictionary<string, string>(); }
public string GetEventViewName(PersistentEvent ev) { if (!ShouldHandle(ev)) return null; throw new NotImplementedException(); }
public string GetStackSummaryHtml(PersistentEvent ev) { if (!ShouldHandle(ev)) return null; throw new NotImplementedException(); }
private bool ShouldHandle(PersistentEvent ev) { return ev.IsError(); }