From 08eee67cb45a8e0552e344387a5e04a121c5d203 Mon Sep 17 00:00:00 2001 From: Emre KARA Date: Tue, 27 May 2025 00:55:31 +0300 Subject: [PATCH] Refactor telemetry system and remove obsolete ActivityDataProvider --- ... => TelemetryPermissionInfoContributor.cs} | 6 +- .../src/Volo.Abp.Core/Volo.Abp.Core.csproj | 8 +- ...pApplicationWithExternalServiceProvider.cs | 15 ++- .../Contracts/IActivityDataProvider.cs | 13 -- .../ITelemetryActivityDataProvider.cs | 8 ++ ...torage.cs => ITelemetryActivityStorage.cs} | 2 +- ...r.cs => ITelemetrySolutionInfoProvider.cs} | 4 +- .../Providers/ActivityDataProvider.cs | 126 ------------------ .../TelemetryActivityDataProvider.cs | 77 +++++++++++ ...er.cs => TelemetrySolutionInfoProvider.cs} | 9 +- ...Storage.cs => TelemetryActivityStorage.cs} | 27 ++-- ...te.cs => TelemetryActivityStorageState.cs} | 2 +- .../Telemetry/Constants/AbpPlatformUrls.cs | 15 +++ .../ActivityNameConsts.cs | 2 +- .../ActivityPropertyName.cs | 2 +- .../Abp/Telemetry/Constants/Enums/AbpTool.cs | 9 ++ .../{Shared => Constants}/Enums/DeviceType.cs | 2 +- .../Enums/OperationSystem.cs | 2 +- .../Enums/SessionType.cs | 2 +- .../Enums/SoftwareType.cs | 2 +- .../TelemetryPaths.cs} | 22 +-- .../Contracts/IDeviceInfoProvider.cs | 2 +- .../Contracts/ISoftwareDetector.cs | 2 +- .../Contracts/SoftwareInfo.cs | 2 +- .../Core/SoftwareDetector.cs | 2 +- .../Detectors/AbpStudioDetector.cs | 8 +- .../Detectors/ChromeDetector.cs | 2 +- .../Detectors/DotnetSdkDetector.cs | 2 +- .../Detectors/FireFoxDetector.cs | 2 +- .../Detectors/MsEdgeDetector.cs | 2 +- .../Detectors/NodeJsDetector.cs | 2 +- .../Detectors/OperatingSystemDetector.cs | 2 +- .../Detectors/RiderDetector.cs | 2 +- .../Detectors/VisualStudioCodeDetector.cs | 2 +- .../Detectors/VisualStudioDetector.cs | 2 +- .../Providers/DeviceInfoProvider.cs | 8 +- ...aHelper.cs => AbpPackageMetadataReader.cs} | 2 +- .../ITelemetryApplicationInfoContributor.cs | 1 - .../ITelemetrySessionContextProvider.cs | 10 ++ ...ryApplicationRuntimeSessionTypeProvider.cs | 39 ++++++ .../Volo/Abp/Telemetry/TelemetryDataSender.cs | 19 ++- ...r.cs => TelemetryModuleInfoContributor.cs} | 15 +-- .../Volo/Abp/Telemetry/TelemetryService.cs | 26 ++-- ...r.cs => TelemetryDomainInfoContributor.cs} | 4 +- 44 files changed, 253 insertions(+), 260 deletions(-) rename framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/{PermissionInfoContributor.cs => TelemetryPermissionInfoContributor.cs} (72%) delete mode 100644 framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/IActivityDataProvider.cs create mode 100644 framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityDataProvider.cs rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/{IActivityStorage.cs => ITelemetryActivityStorage.cs} (94%) rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/{ISolutionInfoProvider.cs => ITelemetrySolutionInfoProvider.cs} (68%) delete mode 100644 framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/ActivityDataProvider.cs create mode 100644 framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryActivityDataProvider.cs rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/{SolutionInfoProvider.cs => TelemetrySolutionInfoProvider.cs} (95%) rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/{ActivityStorage.cs => TelemetryActivityStorage.cs} (87%) rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/{ActivityStorageState.cs => TelemetryActivityStorageState.cs} (92%) create mode 100644 framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/AbpPlatformUrls.cs rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/{Shared => Constants}/ActivityNameConsts.cs (99%) rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/{Shared => Constants}/ActivityPropertyName.cs (99%) create mode 100644 framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/AbpTool.cs rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/{Shared => Constants}/Enums/DeviceType.cs (60%) rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/{Shared => Constants}/Enums/OperationSystem.cs (65%) rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/{Shared => Constants}/Enums/SessionType.cs (69%) rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/{Shared => Constants}/Enums/SoftwareType.cs (74%) rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/{Shared/AbpTelemetryPaths.cs => Constants/TelemetryPaths.cs} (56%) rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Helpers/{AbpPackageMetadataHelper.cs => AbpPackageMetadataReader.cs} (98%) create mode 100644 framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetrySessionContextProvider.cs create mode 100644 framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryApplicationRuntimeSessionTypeProvider.cs rename framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/{ModuleInfoContributor.cs => TelemetryModuleInfoContributor.cs} (68%) rename framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Telemetry/{DomainInfoContributor.cs => TelemetryDomainInfoContributor.cs} (84%) diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionInfoContributor.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/TelemetryPermissionInfoContributor.cs similarity index 72% rename from framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionInfoContributor.cs rename to framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/TelemetryPermissionInfoContributor.cs index 1089261dd5..7ca5018584 100644 --- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionInfoContributor.cs +++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/TelemetryPermissionInfoContributor.cs @@ -2,16 +2,16 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry; using Volo.Abp.Telemetry.Activity; -using Volo.Abp.Telemetry.Shared; +using Volo.Abp.Telemetry.Constants; namespace Volo.Abp.Authorization.Permissions; [ExposeServices(typeof(ITelemetryApplicationInfoContributor))] -public class PermissionInfoContributor : ITelemetryApplicationInfoContributor, ISingletonDependency +public class TelemetryPermissionInfoContributor : ITelemetryApplicationInfoContributor, ISingletonDependency { private readonly IPermissionDefinitionManager _permissionDefinitionManager; - public PermissionInfoContributor(IPermissionDefinitionManager permissionDefinitionManager) + public TelemetryPermissionInfoContributor(IPermissionDefinitionManager permissionDefinitionManager) { _permissionDefinitionManager = permissionDefinitionManager; } diff --git a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj index 17e6343e70..f89fdbdfb6 100644 --- a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj +++ b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj @@ -17,7 +17,6 @@ - @@ -35,6 +34,12 @@ + + + + + $(DefineConstants);WINDOWS + @@ -47,4 +52,5 @@ runtime; build; native; contentfiles; analyzers + diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationWithExternalServiceProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationWithExternalServiceProvider.cs index 8d6ce774a4..9bca03b5f9 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationWithExternalServiceProvider.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationWithExternalServiceProvider.cs @@ -6,8 +6,8 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Volo.Abp.Telemetry; +using Volo.Abp.Telemetry.Constants; using Volo.Abp.Telemetry.Helpers; -using Volo.Abp.Telemetry.Shared; namespace Volo.Abp; @@ -67,20 +67,21 @@ internal class AbpApplicationWithExternalServiceProvider : AbpApplicationBase, I } private void ConfigureTelemetry(IServiceProvider serviceProvider) { + var configuration = serviceProvider.GetRequiredService(); + if (configuration.GetValue("Abp:Telemetry:Disable")) + { + return; + } + Task.Run(async () => { try { using var scope = serviceProvider.CreateScope(); - var configuration = scope.ServiceProvider.GetRequiredService(); - if (configuration.GetValue("Abp:Telemetry:Disable")) - { - return; - } var assembly = Assembly.GetEntryAssembly()!; - var packageMetadata = AbpPackageMetadataHelper.GetMetaData(assembly); + var packageMetadata = AbpPackageMetadataReader.GetMetaData(assembly); if (packageMetadata != null) { diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/IActivityDataProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/IActivityDataProvider.cs deleted file mode 100644 index 394bba4105..0000000000 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/IActivityDataProvider.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Reflection; -using System.Threading; -using System.Threading.Tasks; -using Volo.Abp.Telemetry.Shared.Enums; - -namespace Volo.Abp.Telemetry.Activity; - -public interface IActivityDataProvider -{ - - Task AddExtraInformationAsync(ActivityData activity); -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityDataProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityDataProvider.cs new file mode 100644 index 0000000000..c1e5b9a2d0 --- /dev/null +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityDataProvider.cs @@ -0,0 +1,8 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.Telemetry.Activity.Contracts; + +public interface ITelemetryActivityDataProvider +{ + Task AddExtraInformationAsync(ActivityData activity); +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/IActivityStorage.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityStorage.cs similarity index 94% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/IActivityStorage.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityStorage.cs index 9c8cf3db08..b180b27ba3 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/IActivityStorage.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityStorage.cs @@ -4,7 +4,7 @@ using System.Threading.Tasks; namespace Volo.Abp.Telemetry.Activity.Contracts; -public interface IActivityStorage +public interface ITelemetryActivityStorage { Task GetLastActivitySendTimeAsync(); Task<(bool isFirstSession, Guid sessionId)> GetOrCreateSessionInfoAsync(); diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ISolutionInfoProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetrySolutionInfoProvider.cs similarity index 68% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ISolutionInfoProvider.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetrySolutionInfoProvider.cs index abaf487d0a..a91c0846d9 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ISolutionInfoProvider.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetrySolutionInfoProvider.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Threading.Tasks; -namespace Volo.Abp.Telemetry.Activity; +namespace Volo.Abp.Telemetry.Activity.Contracts; -public interface ISolutionInfoProvider +public interface ITelemetrySolutionInfoProvider { Task> GetSolutionInfoAsync(string solutionPath); diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/ActivityDataProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/ActivityDataProvider.cs deleted file mode 100644 index 7ef41af553..0000000000 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/ActivityDataProvider.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Telemetry.Activity.Contracts; -using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; -using Volo.Abp.Telemetry.Shared; -using Volo.Abp.Telemetry.Shared.Enums; - -namespace Volo.Abp.Telemetry.Activity.Providers; - -public class ActivityDataProvider : IActivityDataProvider, IScopedDependency -{ - private readonly IDeviceInfoProvider _deviceInfoProvider; - private readonly ISoftwareInfoProvider _softwareInfoProvider; - private readonly IEnumerable _applicationInfoContributors; - private readonly IActivityStorage _activityStorage; - private readonly ISolutionInfoProvider _solutionInfoProvider; - - public ActivityDataProvider( - IDeviceInfoProvider deviceInfoProvider, - ISoftwareInfoProvider softwareInfoProvider, - IEnumerable applicationInfoContributors, - IActivityStorage activityStorage, ISolutionInfoProvider solutionInfoProvider) - { - _deviceInfoProvider = deviceInfoProvider; - _softwareInfoProvider = softwareInfoProvider; - _applicationInfoContributors = applicationInfoContributors; - _activityStorage = activityStorage; - _solutionInfoProvider = solutionInfoProvider; - } - - protected virtual SessionType GetSessionType() - { - return SessionType.ApplicationRuntime; - } - - public virtual async Task AddExtraInformationAsync(ActivityData activity) - { - var (isFirstSession, sessionId) = await _activityStorage.GetOrCreateSessionInfoAsync(); - - AddSolutionId(activity); - var sessionType = GetSessionType(); - activity[ActivityPropertyName.SessionType] = sessionType; - activity[ActivityPropertyName.SessionId] = sessionId; - activity[ActivityPropertyName.IsFirstSession] = isFirstSession; - activity[ActivityPropertyName.DeviceId] = _deviceInfoProvider.GetDeviceId(); - - if (await _activityStorage.ShouldAddDeviceInfoAsync()) - { - await AddDeviceInformationAsync(activity); - } - - if (activity.ContainsKey(ActivityPropertyName.Assembly) && sessionType == SessionType.ApplicationRuntime) - { - await AddApplicationInformationAsync(activity); - activity.Remove(ActivityPropertyName.Assembly); - } - - if (await ShouldAddSolutionInformation(activity)) - { - var solutionInfo = await _solutionInfoProvider.GetSolutionInfoAsync(activity[ActivityPropertyName.SolutionPath].ToString()!); - - foreach (var entry in solutionInfo) - { - activity[entry.Key] = entry.Value; - } - } - } - - protected virtual async Task ShouldAddSolutionInformation(ActivityData activity) - { - - if ( - !activity.TryGetValue(ActivityPropertyName.SolutionId, out var id) || - !Guid.TryParse(id.ToString(), out var solutionId) && activity.ContainsKey(ActivityPropertyName.SolutionPath)) - { - return false; - } - - return await _activityStorage.ShouldAddSolutionInformation(solutionId); - } - - protected virtual async Task AddDeviceInformationAsync(ActivityData activityData) - { - activityData[ActivityPropertyName.DeviceType] = _deviceInfoProvider.GetDeviceType(); - activityData[ActivityPropertyName.DeviceLanguage] = _deviceInfoProvider.GetLanguage(); - activityData[ActivityPropertyName.OperatingSystem] = _deviceInfoProvider.GetOperatingSystem(); - activityData[ActivityPropertyName.CountryIsoCode] = _deviceInfoProvider.GetCountry(); - - var softwareList = await _softwareInfoProvider.GetSoftwareInfoAsync(); - activityData[ActivityPropertyName.InstalledSoftwares] = softwareList; - - await _activityStorage.MarkDeviceInfoAsSentAsync(); - } - - protected virtual async Task AddApplicationInformationAsync(ActivityData activityData) - { - foreach (var contributor in _applicationInfoContributors) - { - await contributor.ContributeAsync(activityData); - } - } - - - protected virtual void AddSolutionId(ActivityData activityData) - { - if (activityData.ContainsKey(ActivityPropertyName.SolutionId)) - { - return; - } - - if (!activityData.TryGetValue(ActivityPropertyName.SolutionPath, out var path) || !File.Exists((string)path)) - { - return; - } - - var solutionId = _solutionInfoProvider.GetSolutionId((string)path); - - if (solutionId.HasValue) - { - activityData[ActivityPropertyName.SolutionId] = solutionId.Value; - } - } -} diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryActivityDataProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryActivityDataProvider.cs new file mode 100644 index 0000000000..e8e2ee547b --- /dev/null +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryActivityDataProvider.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Telemetry.Activity.Contracts; +using Volo.Abp.Telemetry.Constants; +using Volo.Abp.Telemetry.Constants.Enums; +using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; + +namespace Volo.Abp.Telemetry.Activity.Providers; + +public class TelemetryActivityDataProvider : ITelemetryActivityDataProvider, ISingletonDependency +{ + private readonly IServiceProvider _serviceProvider; + + public TelemetryActivityDataProvider(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + public virtual async Task AddExtraInformationAsync(ActivityData activity) + { + var activityStorage = _serviceProvider.GetRequiredService(); + var sessionContext = _serviceProvider.GetRequiredService(); + var deviceInfoProvider = _serviceProvider.GetRequiredService(); + + var (isFirstSession, sessionId) = await activityStorage.GetOrCreateSessionInfoAsync(); + + sessionContext.SetSolutionContext(activity); + activity[ActivityPropertyName.SessionType] = sessionContext.SessionType; + activity[ActivityPropertyName.SessionId] = sessionId; + activity[ActivityPropertyName.IsFirstSession] = isFirstSession; + activity[ActivityPropertyName.DeviceId] = deviceInfoProvider.GetDeviceId(); + + if (await activityStorage.ShouldAddDeviceInfoAsync()) + { + activity[ActivityPropertyName.DeviceType] = deviceInfoProvider.GetDeviceType(); + activity[ActivityPropertyName.DeviceLanguage] = deviceInfoProvider.GetLanguage(); + activity[ActivityPropertyName.OperatingSystem] = deviceInfoProvider.GetOperatingSystem(); + activity[ActivityPropertyName.CountryIsoCode] = deviceInfoProvider.GetCountry(); + + var softwareInfo = _serviceProvider.GetRequiredService(); + var softwareList = await softwareInfo.GetSoftwareInfoAsync(); + activity[ActivityPropertyName.InstalledSoftwares] = softwareList; + + await activityStorage.MarkDeviceInfoAsSentAsync(); + } + + if (activity.ContainsKey(ActivityPropertyName.Assembly) && sessionContext.SessionType == SessionType.ApplicationRuntime) + { + var contributors = _serviceProvider.GetRequiredService>(); + foreach (var contributor in contributors) + { + await contributor.ContributeAsync(activity); + } + activity.Remove(ActivityPropertyName.Assembly); + } + + if (activity.TryGetValue(ActivityPropertyName.SolutionId, out var rawSolutionId)) + { + var solutionId = Guid.Parse(rawSolutionId!.ToString()!); + + if (await activityStorage.ShouldAddSolutionInformation(solutionId)) + { + var solutionProvider = _serviceProvider.GetRequiredService(); + var solutionInfo = await solutionProvider.GetSolutionInfoAsync(activity[ActivityPropertyName.SolutionPath].ToString()!); + + foreach (var entry in solutionInfo) + { + activity[entry.Key] = entry.Value; + } + } + } + } + +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/SolutionInfoProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetrySolutionInfoProvider.cs similarity index 95% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/SolutionInfoProvider.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetrySolutionInfoProvider.cs index c786b48daa..613e81e394 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/SolutionInfoProvider.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetrySolutionInfoProvider.cs @@ -7,11 +7,12 @@ using System.Net.Http.Headers; using System.Text.Json; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; -using Volo.Abp.Telemetry.Shared; +using Volo.Abp.Telemetry.Activity.Contracts; +using Volo.Abp.Telemetry.Constants; namespace Volo.Abp.Telemetry.Activity.Providers; -public class SolutionInfoProvider : ISolutionInfoProvider, ISingletonDependency +public class TelemetrySolutionInfoProvider : ITelemetrySolutionInfoProvider, ISingletonDependency { public async Task> GetSolutionInfoAsync(string solutionPath) { @@ -158,7 +159,7 @@ public class SolutionInfoProvider : ISolutionInfoProvider, ISingletonDependency protected virtual async Task GetLicenseTypeAsync() { - if (!File.Exists(AbpTelemetryPaths.AccessToken)) + if (!File.Exists(TelemetryPaths.AccessToken)) { return 0; } @@ -166,7 +167,7 @@ public class SolutionInfoProvider : ISolutionInfoProvider, ISingletonDependency try { using var httpClient = new HttpClient(); - var accessToken = File.ReadAllText(AbpTelemetryPaths.AccessToken); + var accessToken = File.ReadAllText(TelemetryPaths.AccessToken); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); var response = await httpClient.GetAsync($"{AbpPlatformUrls.AbpIoUrl}api/license/api-key"); diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/ActivityStorage.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorage.cs similarity index 87% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/ActivityStorage.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorage.cs index 2e04bb2f18..f02fa82136 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/ActivityStorage.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorage.cs @@ -7,14 +7,13 @@ using System.Text.Json; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.Activity.Contracts; -using Volo.Abp.Telemetry.Shared; +using Volo.Abp.Telemetry.Constants; namespace Volo.Abp.Telemetry.Activity.Storage; -public class ActivityStorage : IActivityStorage, ISingletonDependency +public class TelemetryActivityStorage : ITelemetryActivityStorage, ISingletonDependency { - private ActivityStorageState? _cachedState; - + private TelemetryActivityStorageState? _cachedState; public async Task BufferActivityAsync(ActivityData activityData) { @@ -116,7 +115,7 @@ public class ActivityStorage : IActivityStorage, ISingletonDependency await SaveAsync(); } - private async Task GetStateAsync() + private async Task GetStateAsync() { if (_cachedState != null) { @@ -128,10 +127,10 @@ public class ActivityStorage : IActivityStorage, ISingletonDependency { using var reader = new StreamReader(stream, Encoding.UTF8); var json = await reader.ReadToEndAsync(); - return JsonSerializer.Deserialize(json, new JsonSerializerOptions + return JsonSerializer.Deserialize(json, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase - }) ?? new ActivityStorageState(); + }) ?? new TelemetryActivityStorageState(); }); return _cachedState; } @@ -146,7 +145,7 @@ public class ActivityStorage : IActivityStorage, ISingletonDependency try { using var stream = new FileStream( - AbpTelemetryPaths.ActivityStorage, + TelemetryPaths.ActivityStorage, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None @@ -170,13 +169,13 @@ public class ActivityStorage : IActivityStorage, ISingletonDependency private Task SaveAsync() { - var json = JsonSerializer.Serialize(_cachedState ?? new ActivityStorageState(), + var json = JsonSerializer.Serialize(_cachedState ?? new TelemetryActivityStorageState(), new JsonSerializerOptions { WriteIndented = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); - File.WriteAllText(AbpTelemetryPaths.ActivityStorage, json, Encoding.UTF8); + File.WriteAllText(TelemetryPaths.ActivityStorage, json, Encoding.UTF8); return Task.CompletedTask; } @@ -185,22 +184,22 @@ public class ActivityStorage : IActivityStorage, ISingletonDependency { try { - var directory = Path.GetDirectoryName(AbpTelemetryPaths.ActivityStorage); + var directory = Path.GetDirectoryName(TelemetryPaths.ActivityStorage); if (!Directory.Exists(directory) && !directory.IsNullOrEmpty()) { Directory.CreateDirectory(directory); } - if (!File.Exists(AbpTelemetryPaths.ActivityStorage)) + if (!File.Exists(TelemetryPaths.ActivityStorage)) { - var json = JsonSerializer.Serialize(_cachedState ?? new ActivityStorageState(), + var json = JsonSerializer.Serialize(_cachedState ?? new TelemetryActivityStorageState(), new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, WriteIndented = true }); - File.WriteAllText(AbpTelemetryPaths.ActivityStorage, json, Encoding.UTF8); + File.WriteAllText(TelemetryPaths.ActivityStorage, json, Encoding.UTF8); } } catch diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/ActivityStorageState.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorageState.cs similarity index 92% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/ActivityStorageState.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorageState.cs index 0aebd9f387..653974f83d 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/ActivityStorageState.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorageState.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; namespace Volo.Abp.Telemetry.Activity.Storage; -public class ActivityStorageState +public class TelemetryActivityStorageState { public DateTimeOffset? ActivitySendTime { get; set; } public DateTimeOffset? LastDeviceInfoSendTime { get; set; } diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/AbpPlatformUrls.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/AbpPlatformUrls.cs new file mode 100644 index 0000000000..d3cc5aff45 --- /dev/null +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/AbpPlatformUrls.cs @@ -0,0 +1,15 @@ +namespace Volo.Abp.Telemetry.Constants; + +public static class AbpPlatformUrls +{ +#if DEBUG + public const string AbpTelemetryApiUrl = "https://localhost:44393/"; + public const string AbpIoUrl = "https://localhost:44328/"; +#else + public const string AbpTelemetryApiUrl = "https://telemetry.abp.io/"; + public const string AbpIoUrl = "https://abp.io/"; + +#endif + + +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/ActivityNameConsts.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/ActivityNameConsts.cs similarity index 99% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/ActivityNameConsts.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/ActivityNameConsts.cs index 48894903bb..8e518a1d62 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/ActivityNameConsts.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/ActivityNameConsts.cs @@ -1,4 +1,4 @@ -namespace Volo.Abp.Telemetry.Shared; +namespace Volo.Abp.Telemetry.Constants; public static class ActivityNameConsts { diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/ActivityPropertyName.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/ActivityPropertyName.cs similarity index 99% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/ActivityPropertyName.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/ActivityPropertyName.cs index 7faf4049bf..30711f4eed 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/ActivityPropertyName.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/ActivityPropertyName.cs @@ -1,4 +1,4 @@ -namespace Volo.Abp.Telemetry.Shared; +namespace Volo.Abp.Telemetry.Constants; public static class ActivityPropertyName { diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/AbpTool.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/AbpTool.cs new file mode 100644 index 0000000000..ffbff278a9 --- /dev/null +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/AbpTool.cs @@ -0,0 +1,9 @@ +namespace Volo.Abp.Telemetry.Constants.Enums; + +public enum AbpTool : byte +{ + Unknown = 0, + StudioUI = 1, + StudioCli = 2, + OldCli = 3 +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/DeviceType.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/DeviceType.cs similarity index 60% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/DeviceType.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/DeviceType.cs index f3e37abd0e..7feb608ff9 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/DeviceType.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/DeviceType.cs @@ -1,4 +1,4 @@ -namespace Volo.Abp.Telemetry.Shared.Enums; +namespace Volo.Abp.Telemetry.Constants.Enums; public enum DeviceType { diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/OperationSystem.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/OperationSystem.cs similarity index 65% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/OperationSystem.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/OperationSystem.cs index 29b4faac90..8d5a58bd73 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/OperationSystem.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/OperationSystem.cs @@ -1,4 +1,4 @@ -namespace Volo.Abp.Telemetry.Shared.Enums; +namespace Volo.Abp.Telemetry.Constants.Enums; public enum OperationSystem { diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/SessionType.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/SessionType.cs similarity index 69% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/SessionType.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/SessionType.cs index d58129c796..259062a272 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/SessionType.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/SessionType.cs @@ -1,4 +1,4 @@ -namespace Volo.Abp.Telemetry.Shared.Enums; +namespace Volo.Abp.Telemetry.Constants.Enums; public enum SessionType { diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/SoftwareType.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/SoftwareType.cs similarity index 74% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/SoftwareType.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/SoftwareType.cs index 16461f7ae0..d15fc955cd 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/Enums/SoftwareType.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/Enums/SoftwareType.cs @@ -1,4 +1,4 @@ -namespace Volo.Abp.Telemetry.Shared.Enums; +namespace Volo.Abp.Telemetry.Constants.Enums; public enum SoftwareType : byte { diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/AbpTelemetryPaths.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/TelemetryPaths.cs similarity index 56% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/AbpTelemetryPaths.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/TelemetryPaths.cs index 076c529168..87e394bb8b 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Shared/AbpTelemetryPaths.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/TelemetryPaths.cs @@ -1,31 +1,13 @@ using System; using System.IO; -namespace Volo.Abp.Telemetry.Shared; +namespace Volo.Abp.Telemetry.Constants; -public static class AbpTelemetryPaths +public static class TelemetryPaths { public static string AccessToken => Path.Combine(AbpRootPath, "cli", "access-token.bin"); public static string ComputerId => Path.Combine(AbpRootPath, "cli", "computer-id.bin"); public static string ActivityStorage => Path.Combine(AbpRootPath, "activity-storage.json"); public static string Studio => Path.Combine(AbpRootPath, "studio"); private readonly static string AbpRootPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".abp"); -} - - - -public static class AbpPlatformUrls -{ - - -#if DEBUG - public const string TelemetryApiUrl = "https://localhost:44393/"; - public const string AbpIoUrl = "https://localhost:44328/"; -#else - public const string TelemetryApiUrl = "https://telemetry.abp.io/"; - public const string AbpIoUrl = "https://abp.io/"; - -#endif - - } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/IDeviceInfoProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/IDeviceInfoProvider.cs index 149ed2816f..13ff5049d7 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/IDeviceInfoProvider.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/IDeviceInfoProvider.cs @@ -1,5 +1,5 @@ using System; -using Volo.Abp.Telemetry.Shared.Enums; +using Volo.Abp.Telemetry.Constants.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Contracts; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/ISoftwareDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/ISoftwareDetector.cs index 1f6333dc51..5cc767691d 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/ISoftwareDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/ISoftwareDetector.cs @@ -2,7 +2,7 @@ namespace Volo.Abp.Telemetry.EnvironmentInspection.Contracts; -public interface ISoftwareDetector +internal interface ISoftwareDetector { string Name { get; } Task DetectAsync(); diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/SoftwareInfo.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/SoftwareInfo.cs index bd04106b7f..e47aa0891e 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/SoftwareInfo.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Contracts/SoftwareInfo.cs @@ -1,4 +1,4 @@ -using Volo.Abp.Telemetry.Shared.Enums; +using Volo.Abp.Telemetry.Constants.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Contracts; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Core/SoftwareDetector.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Core/SoftwareDetector.cs index b58fd1f9a4..f859391f61 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Core/SoftwareDetector.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Core/SoftwareDetector.cs @@ -7,7 +7,7 @@ using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; namespace Volo.Abp.Telemetry.EnvironmentInspection.Core; [ExposeServices(typeof(ISoftwareDetector))] -public abstract class SoftwareDetector: ISoftwareDetector , ISingletonDependency +abstract internal class SoftwareDetector: ISoftwareDetector , ISingletonDependency { public abstract string Name { get; } public abstract Task DetectAsync(); 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 f79c3ca00a..fb67a929ed 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,10 +2,10 @@ using System.IO; using System.Text.Json; using System.Threading.Tasks; +using Volo.Abp.Telemetry.Constants; +using Volo.Abp.Telemetry.Constants.Enums; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.EnvironmentInspection.Core; -using Volo.Abp.Telemetry.Shared; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; @@ -31,7 +31,7 @@ internal class AbpStudioDetector : SoftwareDetector private string? GetAbpStudioUiTheme() { var ideStateJsonPath = Path.Combine( - AbpTelemetryPaths.Studio, + TelemetryPaths.Studio, "ui", "ide-state.json" ); @@ -48,7 +48,7 @@ internal class AbpStudioDetector : SoftwareDetector private string? GetAbpStudioVersion() { - var extensionsFilePath = Path.Combine(AbpTelemetryPaths.Studio, "extensions.json"); + var extensionsFilePath = Path.Combine(TelemetryPaths.Studio, "extensions.json"); if (!File.Exists(extensionsFilePath)) { 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 6c7140f788..7a186d78b9 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,9 +2,9 @@ using System.IO; using System.Runtime.InteropServices; using System.Threading.Tasks; +using Volo.Abp.Telemetry.Constants.Enums; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.EnvironmentInspection.Core; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; 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 00211a5bb5..ea4f65a2ae 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,8 +1,8 @@ using System; using System.Threading.Tasks; +using Volo.Abp.Telemetry.Constants.Enums; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.EnvironmentInspection.Core; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; 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 45ead865a4..ee2698c86f 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,9 +2,9 @@ using System.IO; using System.Runtime.InteropServices; using System.Threading.Tasks; +using Volo.Abp.Telemetry.Constants.Enums; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.EnvironmentInspection.Core; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; 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 7e340ca832..6a25f379c5 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,9 +2,9 @@ using System.IO; using System.Runtime.InteropServices; using System.Threading.Tasks; +using Volo.Abp.Telemetry.Constants.Enums; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.EnvironmentInspection.Core; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; 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 9b441ee57e..600793629e 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,8 +1,8 @@ using System; using System.Threading.Tasks; +using Volo.Abp.Telemetry.Constants.Enums; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.EnvironmentInspection.Core; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; 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 b74a8ebc0a..9b6f073a89 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,9 +3,9 @@ using System.Diagnostics; using System.Runtime.InteropServices; using System.Threading.Tasks; using Microsoft.Win32; +using Volo.Abp.Telemetry.Constants.Enums; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.EnvironmentInspection.Core; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; 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 9235fea397..a60a64f5bd 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,9 +4,9 @@ using System.Linq; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Xml.Linq; +using Volo.Abp.Telemetry.Constants.Enums; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.EnvironmentInspection.Core; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; 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 73f1ed3d66..15411e1115 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,9 +4,9 @@ using System.Linq; using System.Runtime.InteropServices; using System.Text.Json; using System.Threading.Tasks; +using Volo.Abp.Telemetry.Constants.Enums; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.EnvironmentInspection.Core; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; 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 3f72ba381b..dce108f52f 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,9 +4,9 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using System.Xml.Linq; +using Volo.Abp.Telemetry.Constants.Enums; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; using Volo.Abp.Telemetry.EnvironmentInspection.Core; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Detectors; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Providers/DeviceInfoProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Providers/DeviceInfoProvider.cs index 4ab8051ae7..1b2ad33b4d 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Providers/DeviceInfoProvider.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/EnvironmentInspection/Providers/DeviceInfoProvider.cs @@ -3,12 +3,14 @@ using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; +#if WINDOWS using System.Management; +#endif using System.Runtime.InteropServices; using Volo.Abp.DependencyInjection; +using Volo.Abp.Telemetry.Constants; +using Volo.Abp.Telemetry.Constants.Enums; using Volo.Abp.Telemetry.EnvironmentInspection.Contracts; -using Volo.Abp.Telemetry.Shared; -using Volo.Abp.Telemetry.Shared.Enums; namespace Volo.Abp.Telemetry.EnvironmentInspection.Providers; @@ -20,7 +22,7 @@ public class DeviceInfoProvider : IDeviceInfoProvider, ISingletonDependency { _deviceId = new Lazy(() => { - var deviceIdText = File.ReadAllText(AbpTelemetryPaths.ComputerId); + var deviceIdText = File.ReadAllText(TelemetryPaths.ComputerId); return deviceIdText.To(); }); } diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Helpers/AbpPackageMetadataHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Helpers/AbpPackageMetadataReader.cs similarity index 98% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Helpers/AbpPackageMetadataHelper.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Helpers/AbpPackageMetadataReader.cs index 9268bb280f..9df90c366e 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Helpers/AbpPackageMetadataHelper.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Helpers/AbpPackageMetadataReader.cs @@ -7,7 +7,7 @@ using System.Text.Json; namespace Volo.Abp.Telemetry.Helpers; -public static class AbpPackageMetadataHelper +public static class AbpPackageMetadataReader { public static AbpPackageMetadata? GetMetaData(Assembly assembly) { diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetryApplicationInfoContributor.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetryApplicationInfoContributor.cs index d10f6bd30e..7df709b1e7 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetryApplicationInfoContributor.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetryApplicationInfoContributor.cs @@ -1,5 +1,4 @@ using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.Activity; namespace Volo.Abp.Telemetry; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetrySessionContextProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetrySessionContextProvider.cs new file mode 100644 index 0000000000..0e4ef65442 --- /dev/null +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetrySessionContextProvider.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Telemetry.Activity; +using Volo.Abp.Telemetry.Constants.Enums; + +namespace Volo.Abp.Telemetry; + +public interface ITelemetrySessionContextProvider +{ + public SessionType SessionType { get; } + void SetSolutionContext(ActivityData activity); +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryApplicationRuntimeSessionTypeProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryApplicationRuntimeSessionTypeProvider.cs new file mode 100644 index 0000000000..be71cf00dd --- /dev/null +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryApplicationRuntimeSessionTypeProvider.cs @@ -0,0 +1,39 @@ +using System.IO; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Telemetry.Activity; +using Volo.Abp.Telemetry.Activity.Contracts; +using Volo.Abp.Telemetry.Constants; +using Volo.Abp.Telemetry.Constants.Enums; + +namespace Volo.Abp.Telemetry; + +public class TelemetryApplicationRuntimeSessionTypeProvider : ITelemetrySessionContextProvider , ISingletonDependency +{ + private readonly ITelemetrySolutionInfoProvider _telemetrySolutionInfoProvider; + + public TelemetryApplicationRuntimeSessionTypeProvider(ITelemetrySolutionInfoProvider telemetrySolutionInfoProvider) + { + _telemetrySolutionInfoProvider = telemetrySolutionInfoProvider; + } + + public virtual SessionType SessionType => SessionType.ApplicationRuntime; + public virtual void SetSolutionContext(ActivityData activity) + { + if (activity.ContainsKey(ActivityPropertyName.SolutionId)) + { + return; + } + + if (!activity.TryGetValue(ActivityPropertyName.SolutionPath, out var path) || !File.Exists((string)path)) + { + return; + } + + var solutionId = _telemetrySolutionInfoProvider.GetSolutionId((string)path); + + if (solutionId.HasValue) + { + activity[ActivityPropertyName.SolutionId] = solutionId.Value; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryDataSender.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryDataSender.cs index 0116c461bc..8b74b70ac9 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryDataSender.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryDataSender.cs @@ -7,20 +7,19 @@ using System.Text; using System.Text.Json; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; -using Volo.Abp.Telemetry.Activity; using Volo.Abp.Telemetry.Activity.Contracts; -using Volo.Abp.Telemetry.Shared; +using Volo.Abp.Telemetry.Constants; namespace Volo.Abp.Telemetry; public class TelemetryDataSender : ITelemetryDataSender, IScopedDependency { - private readonly IActivityStorage _activityStorage; + private readonly ITelemetryActivityStorage _telemetryActivityStorage; private const int ActivityBatchSize = 50; - public TelemetryDataSender(IActivityStorage activityStorage) + public TelemetryDataSender(ITelemetryActivityStorage telemetryActivityStorage) { - _activityStorage = activityStorage; + _telemetryActivityStorage = telemetryActivityStorage; } public async Task SendAsync() @@ -30,7 +29,7 @@ public class TelemetryDataSender : ITelemetryDataSender, IScopedDependency using var httpClient = new HttpClient(); AddAbpAuthenticationTokenAsync(httpClient); - var activities = await _activityStorage.GetBufferedActivitiesAsync(); + var activities = await _telemetryActivityStorage.GetBufferedActivitiesAsync(); if (activities.Count == 0) { return; @@ -41,11 +40,11 @@ public class TelemetryDataSender : ITelemetryDataSender, IScopedDependency { var activityBatch = activities.Skip(i).Take(ActivityBatchSize).ToList(); - await httpClient.PostAsync($"{AbpPlatformUrls.TelemetryApiUrl}api/telemetry/collect", + await httpClient.PostAsync($"{AbpPlatformUrls.AbpTelemetryApiUrl}api/telemetry/collect", new StringContent(JsonSerializer.Serialize(activityBatch), Encoding.UTF8, "application/json")); } - await _activityStorage.MarkActivitiesAsSentAsync(); + await _telemetryActivityStorage.MarkActivitiesAsSentAsync(); } catch { @@ -56,12 +55,12 @@ public class TelemetryDataSender : ITelemetryDataSender, IScopedDependency private static void AddAbpAuthenticationTokenAsync(HttpClient httpClient) { - if (!File.Exists(AbpTelemetryPaths.AccessToken)) + if (!File.Exists(TelemetryPaths.AccessToken)) { return; } - var accessToken = File.ReadAllText(AbpTelemetryPaths.AccessToken, Encoding.UTF8); + var accessToken = File.ReadAllText(TelemetryPaths.AccessToken, Encoding.UTF8); if (!accessToken.IsNullOrEmpty()) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ModuleInfoContributor.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryModuleInfoContributor.cs similarity index 68% rename from framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ModuleInfoContributor.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryModuleInfoContributor.cs index 46c59a3525..dc57cb31c1 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ModuleInfoContributor.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryModuleInfoContributor.cs @@ -4,13 +4,12 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Modularity; using Volo.Abp.Telemetry.Activity; -using Volo.Abp.Telemetry.Shared; -using Volo.Abp.Telemetry.Shared.Enums; +using Volo.Abp.Telemetry.Constants; namespace Volo.Abp.Telemetry; [ExposeServices(typeof(ITelemetryApplicationInfoContributor))] -public class ModuleInfoContributor : ITelemetryApplicationInfoContributor, ISingletonDependency +public class TelemetryModuleInfoContributor : ITelemetryApplicationInfoContributor, ISingletonDependency { public Task ContributeAsync(ActivityData activityData) { @@ -27,14 +26,4 @@ public class ModuleInfoContributor : ITelemetryApplicationInfoContributor, ISing return Task.CompletedTask; } -} - -public interface ITelemetrySessionTypeProvider -{ - public SessionType SessionType { get; } -} - -public class ApplicationRuntimeSessionTypeProvider : ITelemetrySessionTypeProvider, ISingletonDependency -{ - public SessionType SessionType => SessionType.ApplicationRuntime; } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryService.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryService.cs index 694de4811c..ad74d01adf 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryService.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryService.cs @@ -5,22 +5,22 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Telemetry.Activity; using Volo.Abp.Telemetry.Activity.Contracts; -using Volo.Abp.Telemetry.Shared; +using Volo.Abp.Telemetry.Constants; namespace Volo.Abp.Telemetry; public class TelemetryService : ITelemetryService, IScopedDependency { - private readonly IActivityStorage _activityStorage; + private readonly ITelemetryActivityStorage _telemetryActivityStorage; private readonly ITelemetryDataSender _telemetryDataSender; - private readonly IActivityDataProvider _activityDataProvider; + private readonly ITelemetryActivityDataProvider _telemetryActivityDataProvider; - public TelemetryService(IActivityStorage activityStorage, ITelemetryDataSender telemetryDataSender, - IActivityDataProvider activityDataProvider) + public TelemetryService(ITelemetryActivityStorage telemetryActivityStorage, ITelemetryDataSender telemetryDataSender, + ITelemetryActivityDataProvider telemetryActivityDataProvider) { - _activityStorage = activityStorage; + _telemetryActivityStorage = telemetryActivityStorage; _telemetryDataSender = telemetryDataSender; - _activityDataProvider = activityDataProvider; + _telemetryActivityDataProvider = telemetryActivityDataProvider; } public IAsyncDisposable TrackActivity(string activityName, Action? configure = null) @@ -54,11 +54,7 @@ public class TelemetryService : ITelemetryService, IScopedDependency private async Task CheckIfActivitySendTimeIsDueAsync() { - var lastActivitySendTime = await _activityStorage.GetLastActivitySendTimeAsync(); - // if (lastActivitySendTime is null) - // { - // await _telemetryDataSender.SendAsync(); - // } + var lastActivitySendTime = await _telemetryActivityStorage.GetLastActivitySendTimeAsync(); if (lastActivitySendTime is not null && lastActivitySendTime < DateTimeOffset.UtcNow.AddDays(-1)) { @@ -70,13 +66,13 @@ public class TelemetryService : ITelemetryService, IScopedDependency { try { - await _activityDataProvider.AddExtraInformationAsync(data); - await _activityStorage.BufferActivityAsync(data); + await _telemetryActivityDataProvider.AddExtraInformationAsync(data); + await _telemetryActivityStorage.BufferActivityAsync(data); await CheckIfActivitySendTimeIsDueAsync(); if (data.ActivityName == ActivityNameConsts.AbpStudioClose) { - await _activityStorage.EndSessionAsync(); + await _telemetryActivityStorage.EndSessionAsync(); } } catch diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Telemetry/DomainInfoContributor.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Telemetry/TelemetryDomainInfoContributor.cs similarity index 84% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Telemetry/DomainInfoContributor.cs rename to framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Telemetry/TelemetryDomainInfoContributor.cs index 06b26c1631..a6e923c7cb 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Telemetry/DomainInfoContributor.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Telemetry/TelemetryDomainInfoContributor.cs @@ -5,12 +5,12 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Entities; using Volo.Abp.Telemetry; using Volo.Abp.Telemetry.Activity; -using Volo.Abp.Telemetry.Shared; +using Volo.Abp.Telemetry.Constants; namespace Volo.Abp.Domain.Telemetry; [ExposeServices(typeof(ITelemetryApplicationInfoContributor))] -public class DomainInfoContributor : ITelemetryApplicationInfoContributor , ISingletonDependency +public class TelemetryDomainInfoContributor : ITelemetryApplicationInfoContributor , ISingletonDependency { public Task ContributeAsync(ActivityData activityData) {