Browse Source

Refactor telemetry enrichers: streamline project and solution ID retrieval, improve method structure, and enhance code readability.

pull/23059/head
Emre KARA 1 year ago
parent
commit
7de771cdbd
  1. 7
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs
  2. 61
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs

7
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs

@ -31,12 +31,7 @@ public class TelemetryApplicationInfoEnricher : ITelemetryActivityDataEnricher,
return; return;
} }
if (!TryGetProjectId(activity, out var projectId)) if (!TryGetProjectId(activity, out var projectId) && !await _telemetryActivityStorage.ShouldAddApplicationInfoAsync(projectId))
{
return;
}
if (!await _telemetryActivityStorage.ShouldAddApplicationInfoAsync(projectId))
{ {
return; return;
} }

61
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs

@ -22,79 +22,72 @@ public class TelemetrySolutionInfoEnricher : ITelemetryActivityDataEnricher, ISi
_telemetryActivityStorage = telemetryActivityStorage; _telemetryActivityStorage = telemetryActivityStorage;
} }
public async Task EnrichAsync(ActivityEvent activity) public async Task EnrichAsync(ActivityEvent activity)
{ {
var solutionId = GetSolutionId(activity); if (TryGetSolutionId(activity, out var solutionId))
if (solutionId.HasValue)
{ {
if (await _telemetryActivityStorage.ShouldAddSolutionInformation(solutionId.Value)) if (await _telemetryActivityStorage.ShouldAddSolutionInformation(solutionId))
{ {
activity[ActivityPropertyNames.SolutionId] = solutionId;
await FillSolutionInfoAsync(activity); await FillSolutionInfoAsync(activity);
await _telemetryActivityStorage.MarkSolutionInfoAsAddedAsync(solutionId.Value); await _telemetryActivityStorage.MarkSolutionInfoAsAddedAsync(solutionId);
activity[ActivityPropertyNames.HasSolutionInfo] = true; activity[ActivityPropertyNames.HasSolutionInfo] = true;
activity.Remove(ActivityPropertyNames.SolutionPath); activity.Remove(ActivityPropertyNames.SolutionPath);
} }
} }
} }
private Guid? GetSolutionId(ActivityEvent activity) private bool TryGetSolutionId(ActivityEvent activity, out Guid solutionId)
{ {
if (TryGetSolutionIdFromActivity(activity, out var solutionId)) if (TryGetSolutionIdFromActivity(activity, out solutionId))
{ {
return solutionId; return true;
} }
if (TryGetSolutionIdFromFile(activity, out var idFromFile)) if (TryGetSolutionIdFromFile(activity, out solutionId))
{ {
activity[ActivityPropertyNames.SolutionId] = idFromFile; return true;
return idFromFile;
} }
return null; solutionId = Guid.Empty;
return false;
} }
private async Task FillSolutionInfoAsync(ActivityEvent activityEvent)
private Task FillSolutionInfoAsync(ActivityEvent activity)
{ {
try try
{ {
if (!activityEvent.TryGetValue(ActivityPropertyNames.SolutionPath, out var rawSolutionPath) if (!activity.TryGetValue(ActivityPropertyNames.SolutionPath, out var rawSolutionPath)
|| string.IsNullOrWhiteSpace(rawSolutionPath?.ToString()) || string.IsNullOrWhiteSpace(rawSolutionPath?.ToString())
|| !File.Exists(rawSolutionPath?.ToString())) || !File.Exists(rawSolutionPath?.ToString()))
{ {
return; return Task.CompletedTask;
}
var solutionPath = rawSolutionPath!.ToString();
if (!File.Exists(solutionPath))
{
return;
} }
var solutionPath = rawSolutionPath!.ToString()!;
var jsonContent = File.ReadAllText(solutionPath); var jsonContent = File.ReadAllText(solutionPath);
using var doc = JsonDocument.Parse(jsonContent); using var doc = JsonDocument.Parse(jsonContent);
var root = doc.RootElement; var root = doc.RootElement;
AddSolutionInformation(activityEvent, root.GetProperty("creatingStudioConfiguration")); AddSolutionInformation(activity, root.GetProperty("creatingStudioConfiguration"));
if (root.TryGetProperty("modules", out var modulesElement) && if (root.TryGetProperty("modules", out var modulesElement) && modulesElement.ValueKind == JsonValueKind.Object)
modulesElement.ValueKind == JsonValueKind.Object)
{ {
var directoryPath = Path.GetDirectoryName(solutionPath)!; var directoryPath = Path.GetDirectoryName(solutionPath)!;
activityEvent[ActivityPropertyNames.InstalledModules] = ExtractModules(directoryPath, modulesElement); activity[ActivityPropertyNames.InstalledModules] = ExtractModules(directoryPath, modulesElement);
} }
} }
catch catch
{ {
// ignored // ignored
} }
return Task.CompletedTask;
} }
private bool TryGetSolutionIdFromActivity(ActivityEvent activity, out Guid solutionId) private bool TryGetSolutionIdFromActivity(ActivityEvent activity, out Guid solutionId)
{ {
solutionId = Guid.Empty;
if (activity.TryGetValue(ActivityPropertyNames.SolutionId, out var value) && if (activity.TryGetValue(ActivityPropertyNames.SolutionId, out var value) &&
Guid.TryParse(value?.ToString(), out var parsedId)) Guid.TryParse(value?.ToString(), out var parsedId))
@ -102,14 +95,15 @@ public class TelemetrySolutionInfoEnricher : ITelemetryActivityDataEnricher, ISi
solutionId = parsedId; solutionId = parsedId;
return true; return true;
} }
solutionId = Guid.Empty;
return false; return false;
} }
private bool TryGetSolutionIdFromFile(ActivityEvent activity, out Guid solutionId) private bool TryGetSolutionIdFromFile(ActivityEvent activity, out Guid solutionId)
{ {
solutionId = Guid.Empty; solutionId = Guid.Empty;
if (!activity.TryGetValue(ActivityPropertyNames.SolutionPath, out var value)) if (!activity.TryGetValue(ActivityPropertyNames.SolutionPath, out var value))
{ {
return false; return false;
@ -134,9 +128,9 @@ public class TelemetrySolutionInfoEnricher : ITelemetryActivityDataEnricher, ISi
} }
catch catch
{ {
// ignore malformed json etc. // ignored
} }
return false; return false;
} }
@ -246,5 +240,4 @@ public class TelemetrySolutionInfoEnricher : ITelemetryActivityDataEnricher, ISi
_ => false _ => false
}; };
} }
} }
Loading…
Cancel
Save