Exemplo n.º 1
0
        public void FromReportIncludesExpectedKeys()
        {
            var configuration = new Configuration("123456");
            var report        = new Report(configuration, new System.Exception(), Bugsnag.Payload.HandledState.ForHandledException(), new Breadcrumb[0], new Session());
            var breadcrumb    = Breadcrumb.FromReport(report);

            Assert.Equal("error", breadcrumb["type"]);
            Assert.NotNull(breadcrumb["metaData"]);
            Assert.IsType <DateTime>(breadcrumb["timestamp"]);
        }
Exemplo n.º 2
0
        public void Notify(Report report, Middleware callback)
        {
            foreach (var middleware in InternalMiddleware)
            {
                try
                {
                    middleware(report);
                }
                catch (System.Exception exception)
                {
                    Trace.WriteLine(exception);
                }
            }

            lock (_middlewareLock)
            {
                foreach (var middleware in _middleware)
                {
                    try
                    {
                        middleware(report);
                    }
                    catch (System.Exception exception)
                    {
                        Trace.WriteLine(exception);
                    }
                }
            }

            try
            {
                callback?.Invoke(report);
            }
            catch (System.Exception exception)
            {
                Trace.WriteLine(exception);
            }

            if (!report.Ignored)
            {
                Bugsnag.InternalMiddleware.DetermineDefaultContext(report);
                Bugsnag.InternalMiddleware.ApplyMetadataFilters(report);

                _delivery.Send(report);

                Breadcrumbs.Leave(Breadcrumb.FromReport(report));

                if (SessionTracking.CurrentSession != null)
                {
                    SessionTracking.CurrentSession.AddException(report);
                }
            }
        }
Exemplo n.º 3
0
        void Notify(Exception[] exceptions, HandledState handledState, Middleware callback, LogType?logType)
        {
            if (!ShouldSendRequests())
            {
                return; // Skip overhead of computing payload to to ultimately not be sent
            }
            var user = new User {
                Id = User.Id, Email = User.Email, Name = User.Name
            };
            var app = new App(Configuration)
            {
                InForeground         = InForeground,
                DurationInForeground = ForegroundStopwatch.Elapsed,
            };

            NativeClient.PopulateApp(app);
            var device = new Device();

            NativeClient.PopulateDevice(device);
            device.AddRuntimeVersions(Configuration);

            var metadata = new Metadata();

            NativeClient.PopulateMetadata(metadata);

            foreach (var item in Metadata)
            {
                metadata.AddToPayload(item.Key, item.Value);
            }

            metadata.AddToPayload(UnityMetadataKey, UnityMetadata.WithLogType(logType));

            var @event = new Payload.Event(
                Configuration.Context,
                metadata,
                app,
                device,
                user,
                exceptions,
                handledState,
                Breadcrumbs.Retrieve(),
                SessionTracking.CurrentSession);
            var report = new Report(Configuration, @event);

            lock (MiddlewareLock)
            {
                foreach (var middleware in Middleware)
                {
                    try
                    {
                        middleware(report);
                    }
                    catch (System.Exception)
                    {
                    }
                }
            }

            try
            {
                callback?.Invoke(report);
            }
            catch (System.Exception)
            {
            }

            if (!report.Ignored)
            {
                Send(report);

                Breadcrumbs.Leave(Breadcrumb.FromReport(report));

                SessionTracking.AddException(report);
            }
        }
Exemplo n.º 4
0
        void Notify(Exception[] exceptions, HandledState handledState, Middleware callback, LogType?logType)
        {
            var user = new User {
                Id = User.Id, Email = User.Email, Name = User.Name
            };
            var app = new App(Configuration)
            {
                InForeground         = InForeground,
                DurationInForeground = Stopwatch.Elapsed,
            };

            NativeClient.PopulateApp(app);
            var device = new Device();

            NativeClient.PopulateDevice(device);
            var metadata = new Metadata();

            NativeClient.PopulateMetadata(metadata);

            foreach (var item in Metadata)
            {
                metadata.AddToPayload(item.Key, item.Value);
            }

            metadata.AddToPayload(UnityMetadataKey, UnityMetadata.WithLogType(logType));

            var @event = new Payload.Event(
                Configuration.Context,
                metadata,
                app,
                device,
                user,
                exceptions,
                handledState,
                Breadcrumbs.Retrieve(),
                SessionTracking.CurrentSession);
            var report = new Report(Configuration, @event);

            if (report.Configuration.ReleaseStage != null &&
                report.Configuration.NotifyReleaseStages != null &&
                !report.Configuration.NotifyReleaseStages.Contains(report.Configuration.ReleaseStage))
            {
                return;
            }

            lock (MiddlewareLock)
            {
                foreach (var middleware in Middleware)
                {
                    try
                    {
                        middleware(report);
                    }
                    catch (System.Exception)
                    {
                    }
                }
            }

            try
            {
                callback?.Invoke(report);
            }
            catch (System.Exception)
            {
            }

            if (!report.Ignored)
            {
                Send(report);

                Breadcrumbs.Leave(Breadcrumb.FromReport(report));

                SessionTracking.AddException(report);
            }
        }