DynamoVisualProgramming.DynamoServices by Autodesk

<PackageReference Include="DynamoVisualProgramming.DynamoServices" Version="3.1.0-beta4184" />

 Analytics

public static class Analytics
Utility class to support analytics tracking.
using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; namespace Dynamo.Logging { public static class Analytics { private class Dummy : IDisposable { public void Dispose() { } } internal static IAnalyticsClient client; public static bool DisableAnalytics { get; set; } internal static bool IsEnabled => client != null; public static bool ReportingAnalytics { get { if (client != null) return client.ReportingAnalytics; return false; } } internal static void Start(IAnalyticsClient client) { Analytics.client = client; client.Start(); } internal static void ShutDown() { if (client != null) client.ShutDown(); client = null; } public static void TrackStartupTime(string productName, TimeSpan time, string description = "") { if (client != null) { string description2 = string.IsNullOrEmpty(description) ? productName : $"{productName}""{description}"; client.TrackTimedEvent(Categories.Performance, "Startup", time, description2); } } public static void TrackEvent(Actions action, Categories category, string description = "", int? value = default(int?)) { if (client != null) client.TrackEvent(action, category, description, value); } public static void TrackPreference(string name, string stringValue, int? metricValue) { if (client != null) client.TrackPreference(name, stringValue, metricValue); } public static void TrackTimedEvent(Categories category, string variable, TimeSpan time, string description = "") { if (client != null) client.TrackTimedEvent(category, variable, time, description); } public static void TrackScreenView(string viewName) { if (client != null) client.TrackScreenView(viewName); } public static void TrackActivityStatus(string activityType) { if (client != null) client.TrackActivityStatus(activityType); } public static void TrackException(Exception ex, bool isFatal) { if (client != null) client.TrackException(ex, isFatal); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("Type: " + ex.GetType()?.ToString()); stringBuilder.AppendLine("Fatal: " + isFatal.ToString()); stringBuilder.AppendLine("Message: " + ex.Message); stringBuilder.AppendLine("StackTrace: " + ex.StackTrace); } public static IDisposable CreateTimedEvent(Categories category, string variable, string description = "", int? value = default(int?)) { if (client == null) return new Dummy(); return client.CreateTimedEvent(category, variable, description, value); } public static Task<IDisposable> CreateTaskTimedEvent(Categories category, string variable, string description = "", int? value = default(int?)) { if (client == null) return Task.FromResult((IDisposable)new Dummy()); return client.CreateTaskTimedEvent(category, variable, description, value); } public static IDisposable TrackCommandEvent(string name, string description = "", int? value = default(int?)) { if (client == null) return new Dummy(); return client.CreateCommandEvent(name, description, value); } public static Task<IDisposable> TrackTaskCommandEvent(string name, string description = "", int? value = default(int?), IDictionary<string, object> parameters = null) { if (client == null) return Task.FromResult((IDisposable)new Dummy()); return client.CreateTaskCommandEvent(name, description, value, parameters); } public static void EndTaskCommandEvent(Task<IDisposable> taskEvent) { client?.EndEventTask(taskEvent); } public static IDisposable TrackFileOperationEvent(string filepath, Actions operation, int size, string description = "") { if (client == null) return new Dummy(); return client.TrackFileOperationEvent(filepath, operation, size, description); } public static Task<IDisposable> TrackTaskFileOperationEvent(string filepath, Actions operation, int size, string description = "") { if (client == null) return Task.FromResult((IDisposable)new Dummy()); return client.TrackTaskFileOperationEvent(filepath, operation, size, description); } } }