/// <summary> /// Send a report to Backtrace API /// </summary> /// <param name="report">Report to send</param> public virtual void Send(BacktraceReportBase <T> report) { //check rate limiting bool watcherValidation = _reportWatcher.WatchReport(report); if (!watcherValidation) { OnClientReportLimitReached?.Invoke(); return; } //generate minidump and add minidump to report string minidumpPath = _database.GenerateMiniDump(report, MiniDumpType); if (!string.IsNullOrEmpty(minidumpPath)) { report._attachmentPaths.Add(minidumpPath); } //create a JSON payload instance var data = new BacktraceData <T>(report, Attributes); //valid user custom events data = BeforeSend?.Invoke(data) ?? data; _backtraceApi.Send(data); //clear minidumps generated by app _database.ClearMiniDump(minidumpPath); }
/// <summary> /// Concat two attributes dictionary /// </summary> /// <param name="report">Current report</param> /// <param name="attributes">Attributes to concatenate</param> /// <returns></returns> internal static Dictionary <string, T> ConcatAttributes( BacktraceReportBase <T> report, Dictionary <string, T> attributes) { var reportAttributes = report.Attributes; if (attributes == null) { return(reportAttributes); } ; return(reportAttributes.Merge(attributes)); }