From 7bd685000456c19b5895607b9ed9a5c8bf535586 Mon Sep 17 00:00:00 2001 From: Emre KARA Date: Mon, 26 May 2025 20:26:32 +0300 Subject: [PATCH] Refactor telemetry detectors and simplify solution info parsing --- .../Activity/SolutionInfoProvider.cs | 102 ++---------------- .../Detectors/AbpStudioDetector.cs | 16 ++- .../Detectors/ChromeDetector.cs | 3 +- .../Detectors/DotnetSdkDetector.cs | 3 +- .../Detectors/FireFoxDetector.cs | 3 +- .../Detectors/MsEdgeDetector.cs | 3 +- .../Detectors/NodeJsDetector.cs | 3 +- .../Detectors/OperatingSystemDetector.cs | 3 +- .../Detectors/RiderDetector.cs | 3 +- .../Detectors/VisualStudioCodeDetector.cs | 3 +- .../Detectors/VisualStudioDetector.cs | 3 +- 11 files changed, 29 insertions(+), 116 deletions(-) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/SolutionInfoProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/SolutionInfoProvider.cs index f40121d5e3..34142f75c6 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/SolutionInfoProvider.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/SolutionInfoProvider.cs @@ -7,9 +7,7 @@ using System.Net.Http.Headers; using System.Text.Json; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; -using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.Shared; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.Activity; @@ -57,19 +55,19 @@ public class SolutionInfoProvider : ISolutionInfoProvider, ISingletonDependency { var map = new (string Key, Action Apply)[] { - ("template", v => dict[ActivityPropertyName.Template] = MapSolutionTemplate(v.GetString())), + ("template", v => dict[ActivityPropertyName.Template] = v.GetString() ?? string.Empty), ("createdAbpStudioVersion", v => dict[ActivityPropertyName.CreatedAbpStudioVersion] = v.GetString()!), ("multiTenancy", v => dict[ActivityPropertyName.MultiTenancy] = ParseBool(v)), - ("uiFramework", v => dict[ActivityPropertyName.UiFramework] = MapUiFramework(v.GetString())), - ("databaseProvider", v => dict[ActivityPropertyName.DatabaseProvider] = MapDatabaseProvider(v.GetString())), - ("theme", v => dict[ActivityPropertyName.Theme] = MapUiTheme(v.GetString())), - ("themeStyle", v => dict[ActivityPropertyName.ThemeStyle] = MapUiThemeStyle(v.GetString())), + ("uiFramework", v => dict[ActivityPropertyName.UiFramework] = v.GetString() ?? string.Empty), + ("databaseProvider", v => dict[ActivityPropertyName.DatabaseProvider] = v.GetString() ?? string.Empty), + ("theme", v => dict[ActivityPropertyName.Theme] = v.GetString() ?? string.Empty), + ("themeStyle", v => dict[ActivityPropertyName.ThemeStyle] = v.GetString() ?? string.Empty), ("publicWebsite", v => dict[ActivityPropertyName.HasPublicWebsite] = ParseBool(v)), ("tiered", v => dict[ActivityPropertyName.IsTiered] = ParseBool(v)), ("socialLogin", v => dict[ActivityPropertyName.SocialLogins] = ParseBool(v)), - ("databaseManagementSystem", v => dict[ActivityPropertyName.DatabaseManagementSystem] = MapDbms(v.GetString())), + ("databaseManagementSystem", v => dict[ActivityPropertyName.DatabaseManagementSystem] = v.GetString() ?? string.Empty), ("separateTenantSchema", v => dict[ActivityPropertyName.IsSeparateTenantSchema] = ParseBool(v)), - ("mobileFramework", v => dict[ActivityPropertyName.MobileFramework] = MapMobileApp(v.GetString())), + ("mobileFramework", v => dict[ActivityPropertyName.MobileFramework] = v.GetString() ?? string.Empty), ("includeTests", v => dict[ActivityPropertyName.IncludeTests] = ParseBool(v)), ("dynamicLocalization", v => dict[ActivityPropertyName.DynamicLocalization] = ParseBool(v)), ("kubernetesConfiguration", v => dict[ActivityPropertyName.KubernetesConfiguration] = ParseBool(v)), @@ -185,90 +183,4 @@ public class SolutionInfoProvider : ISolutionInfoProvider, ISingletonDependency return 0; } } - - protected virtual UiTheme MapUiTheme(string? theme) - { - return theme switch - { - "none" => UiTheme.None, - "basic" => UiTheme.Basic, - "leptonx" => UiTheme.LeptonX, - "leptonx-lite" => UiTheme.LeptonXLite, - _ => UiTheme.Unknown - }; - } - - protected virtual UiThemeStyle MapUiThemeStyle(string? style) - { - return style switch - { - "dim" => UiThemeStyle.Dim, - "style" => UiThemeStyle.System, - "dark" => UiThemeStyle.Dark, - "light" => UiThemeStyle.Light, - _ => UiThemeStyle.Unknown - }; - } - - protected virtual SolutionTemplate MapSolutionTemplate(string? template) - { - return template switch - { - "microservice" => SolutionTemplate.Microservice, - "app-nolayers" => SolutionTemplate.AppNoLayers, - "app" => SolutionTemplate.AppLayered, - _ => SolutionTemplate.Unknown - }; - } - - protected virtual UiFramework MapUiFramework(string? framework) - { - return framework switch - { - "mvc" => UiFramework.MvcRazorPages, - "blazor" => UiFramework.BlazorWasm, - "angular" => UiFramework.Angular, - "blazor-server" => UiFramework.BlazorServer, - "blazor-webapp" => UiFramework.BlazorWebApp, - "maui-blazor" => UiFramework.BlazorMaUI, - "none" => UiFramework.None, - _ => UiFramework.Unknown - }; - } - - protected virtual DatabaseProvider MapDatabaseProvider(string? provider) - { - return provider switch - { - "ef" => DatabaseProvider.EfCore, - "mongodb" => DatabaseProvider.MongoDb, - "none" => DatabaseProvider.None, - _ => DatabaseProvider.Unknown - }; - } - - protected virtual Dbms MapDbms(string? dbms) - { - return dbms switch - { - "mysql" => Dbms.MySql, - "oracle" => Dbms.Oracle, - "oracle-devart" => Dbms.OracleDevart, - "postgresql" => Dbms.PostgreSql, - "sqlserver" => Dbms.SqlServer, - "sqlite" => Dbms.Sqlite, - _ => Dbms.Unknown - }; - } - - protected virtual MobileApp MapMobileApp(string? mobile) - { - return mobile switch - { - "maui" => MobileApp.Maui, - "react-native" => MobileApp.ReactNative, - "none" => MobileApp.None, - _ => MobileApp.Unknown - }; - } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/AbpStudioDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/AbpStudioDetector.cs index 11d8fb14aa..6482616e05 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/AbpStudioDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/AbpStudioDetector.cs @@ -2,14 +2,13 @@ using System.IO; using System.Text.Json; using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.Shared; using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; -public class AbpStudioDetector : SoftwareDetector +internal class AbpStudioDetector : SoftwareDetector { public override string Name => "Abp Studio"; @@ -58,6 +57,17 @@ public class AbpStudioDetector : SoftwareDetector var json = File.ReadAllText(extensionsFilePath); using var doc = JsonDocument.Parse(json); - return doc.RootElement.TryGetProperty("version", out var versionElement) ? versionElement.GetString() : null; + if (doc.RootElement.TryGetProperty("Extensions", out var extensionsElement) && + extensionsElement.ValueKind == JsonValueKind.Array && + extensionsElement.GetArrayLength() > 0) + { + var firstExtension = extensionsElement[0]; + if (firstExtension.TryGetProperty("version", out var versionElement)) + { + return versionElement.GetString(); + } + } + + return null; } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/ChromeDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/ChromeDetector.cs index 4af200957f..493c9d5cac 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/ChromeDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/ChromeDetector.cs @@ -2,13 +2,12 @@ using System.IO; using System.Runtime.InteropServices; using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; -public class ChromeDetector : SoftwareDetector +internal class ChromeDetector : SoftwareDetector { public override string Name => "Chrome"; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/DotnetSdkDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/DotnetSdkDetector.cs index 85f7e59e5f..afb258bc21 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/DotnetSdkDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/DotnetSdkDetector.cs @@ -1,12 +1,11 @@ using System; using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; -internal class DotnetSdkDetector : SoftwareDetector, ISoftwareDetector, ISingletonDependency +internal class DotnetSdkDetector : SoftwareDetector { public override string Name => "DotnetSdk"; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/FireFoxDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/FireFoxDetector.cs index ffa26574ca..06321f9b7b 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/FireFoxDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/FireFoxDetector.cs @@ -2,13 +2,12 @@ using System.IO; using System.Runtime.InteropServices; using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; -internal class FireFoxDetector : SoftwareDetector, ISoftwareDetector, ISingletonDependency +internal class FireFoxDetector : SoftwareDetector { public override string Name => "Firefox"; public async override Task DetectAsync() diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/MsEdgeDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/MsEdgeDetector.cs index 3379cb5e65..398bd40305 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/MsEdgeDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/MsEdgeDetector.cs @@ -2,13 +2,12 @@ using System.IO; using System.Runtime.InteropServices; using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; -internal class MsEdgeDetector : SoftwareDetector, ISoftwareDetector, ISingletonDependency +internal class MsEdgeDetector : SoftwareDetector { public override string Name => "MsEdge"; public async override Task DetectAsync() diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/NodeJsDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/NodeJsDetector.cs index 9ebf004b65..faf4fae89b 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/NodeJsDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/NodeJsDetector.cs @@ -1,12 +1,11 @@ using System; using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; -internal class NodeJsDetector : SoftwareDetector, ISoftwareDetector, ISingletonDependency +internal class NodeJsDetector : SoftwareDetector { public override string Name => "Node.js"; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/OperatingSystemDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/OperatingSystemDetector.cs index 784057a270..6100644b63 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/OperatingSystemDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/OperatingSystemDetector.cs @@ -3,13 +3,12 @@ using System.Diagnostics; using System.Runtime.InteropServices; using System.Threading.Tasks; using Microsoft.Win32; -using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; -internal class OperatingSystemDetector : SoftwareDetector, ISoftwareDetector, ISingletonDependency +internal class OperatingSystemDetector : SoftwareDetector { public override string Name => RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "Windows" : RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? "macOS" : "Linux"; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/RiderDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/RiderDetector.cs index ca75888e5f..b40efe4694 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/RiderDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/RiderDetector.cs @@ -4,13 +4,12 @@ using System.Linq; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Xml.Linq; -using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; -internal class RiderDetector : SoftwareDetector, ISoftwareDetector, ISingletonDependency +internal class RiderDetector : SoftwareDetector { public override string Name => "Rider"; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/VisualStudioCodeDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/VisualStudioCodeDetector.cs index fbbb14dc3d..74170b792b 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/VisualStudioCodeDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/VisualStudioCodeDetector.cs @@ -4,13 +4,12 @@ using System.Linq; using System.Runtime.InteropServices; using System.Text.Json; using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; -internal class VisualStudioCodeDetector : SoftwareDetector, ISoftwareDetector, ISingletonDependency +internal class VisualStudioCodeDetector : SoftwareDetector { public override string Name => "Visual Studio Code"; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/VisualStudioDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/VisualStudioDetector.cs index cf665e4404..a551c031f9 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/VisualStudioDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Detectors/VisualStudioDetector.cs @@ -4,13 +4,12 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using System.Xml.Linq; -using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; -internal class VisualStudioDetector : SoftwareDetector, ISoftwareDetector, ISingletonDependency +internal class VisualStudioDetector : SoftwareDetector { public override string Name => "Visual Studio";