Example #1
0
        internal static TelemetryEvent ToTelemetry(Data data, string source, PackageSource packageSource, string parentId)
        {
            if (data.Metadata.EventTiming.Requests == 0 && data.Nupkg.EventTiming.Requests == 0)
            {
                return(null);
            }

            var telemetry = new TelemetryEvent(EventName,
                                               new Dictionary <string, object>()
            {
                { PropertyNames.ParentId, parentId },
            });

            // source info
            telemetry.AddPiiData(PropertyNames.Source.Url, source);

            if (packageSource == null)
            {
                packageSource = new PackageSource(source);
            }

            if (packageSource.IsHttp)
            {
                telemetry[PropertyNames.Source.Type]     = "http";
                telemetry[PropertyNames.Source.Protocol] = TelemetryUtility.IsHttpV3(packageSource) ? 3 : packageSource.ProtocolVersion;
            }
            else
            {
                telemetry[PropertyNames.Source.Type]     = "local";
                telemetry[PropertyNames.Source.Protocol] = packageSource.ProtocolVersion;
            }

            var msFeed = GetMsFeed(packageSource);

            if (msFeed != null)
            {
                telemetry[PropertyNames.Source.MSFeed] = msFeed;
            }

            AddResourceProperties(telemetry, data.Metadata, PropertyNames.Metadata);
            AddResourceProperties(telemetry, data.Nupkg, PropertyNames.Nupkg);

            ResourceData all = CalculateTotal(data.Metadata, data.Nupkg);

            AddResourceProperties(telemetry, all, PropertyNames.All);

            return(telemetry);
        }
        /// <summary> Records error information when the given task faults. </summary>
        /// <param name="joinableTask"> Joinable task to execute. </param>
        /// <param name="callerClassName"> Caller class name. </param>
        /// <param name="callerMemberName"> Caller member name. </param>
        public static void PostOnFailure(this JoinableTask joinableTask, string callerClassName, [CallerMemberName] string callerMemberName = null)
        {
            JoinableTask forget = NuGetUIThreadHelper.JoinableTaskFactory.RunAsync(async() =>
            {
                try
                {
#pragma warning disable VSTHRD003 // Avoid awaiting foreign Tasks - As a fire-and-forget continuation, deadlocks can't happen.
                    await joinableTask.Task.ConfigureAwait(false);
#pragma warning restore VSTHRD003
                }
                catch (Exception e)
                {
                    await TelemetryUtility.PostFaultAsync(e, callerClassName, callerMemberName);
                }
            });
        }
 public async Task PostFaultAsync(Exception e, string callerClassName, [CallerMemberName] string callerMemberName = null, IDictionary <string, object> extraProperties = null)
 {
     await TelemetryUtility.PostFaultAsync(e, callerClassName, callerMemberName, extraProperties);
 }