diff --git a/src/UniGetUI.Interface.Telemetry/TelemetryHandler.cs b/src/UniGetUI.Interface.Telemetry/TelemetryHandler.cs index b59c8b089..4afe481d1 100644 --- a/src/UniGetUI.Interface.Telemetry/TelemetryHandler.cs +++ b/src/UniGetUI.Interface.Telemetry/TelemetryHandler.cs @@ -103,7 +103,27 @@ public static async void Initialize() } } - public static async void PackageInstalled(IPackage package) + public enum OP_RESULT + { + SUCCESS, + FAILED, + CANCELED + } + + public static void InstallPackage(IPackage package, OP_RESULT status) + => PackageEndpoint(package, "install", status); + + public static void UpdatePackage(IPackage package, OP_RESULT status) + => PackageEndpoint(package, "update", status); + + public static void DownloadPackage(IPackage package, OP_RESULT status) + => PackageEndpoint(package, "download", status); + + public static void UninstallPackage(IPackage package, OP_RESULT status) + => PackageEndpoint(package, "uninstall", status); + + + private static async void PackageEndpoint(IPackage package, string endpoint, OP_RESULT result) { try { @@ -118,12 +138,13 @@ public static async void PackageInstalled(IPackage package) string ID = Settings.GetValue("TelemetryClientToken"); - var request = new HttpRequestMessage(HttpMethod.Post, $"{HOST}/install"); + var request = new HttpRequestMessage(HttpMethod.Post, $"{HOST}/package/{endpoint}"); request.Headers.Add("clientId", ID); request.Headers.Add("packageId", package.Id); request.Headers.Add("managerName", package.Manager.Name); request.Headers.Add("sourceName", package.Source.Name); + request.Headers.Add("operationResult", result.ToString()); HttpClient _httpClient = new(CoreData.GenericHttpClientParameters); HttpResponseMessage response = await _httpClient.SendAsync(request); diff --git a/src/UniGetUI/AppOperationHelper.cs b/src/UniGetUI/AppOperationHelper.cs index 840530f10..cc065977a 100644 --- a/src/UniGetUI/AppOperationHelper.cs +++ b/src/UniGetUI/AppOperationHelper.cs @@ -88,6 +88,8 @@ public static void Remove(AbstractOperation op) if (file is not null) { var op = new DownloadOperation(package, file.Path); + op.OperationSucceeded += (_, _) => TelemetryHandler.DownloadPackage(package, TelemetryHandler.OP_RESULT.SUCCESS); + op.OperationFailed += (_, _) => TelemetryHandler.DownloadPackage(package, TelemetryHandler.OP_RESULT.FAILED); Add(op); return op; } @@ -113,7 +115,8 @@ public static void Remove(AbstractOperation op) var options = await InstallationOptions.FromPackageAsync(package, elevated, interactive, no_integrity); var op = new InstallPackageOperation(package, options, ignoreParallel, req); Add(op); - op.OperationSucceeded += (_, _) => TelemetryHandler.PackageInstalled(package); + op.OperationSucceeded += (_, _) => TelemetryHandler.InstallPackage(package, TelemetryHandler.OP_RESULT.SUCCESS); + op.OperationFailed += (_, _) => TelemetryHandler.InstallPackage(package, TelemetryHandler.OP_RESULT.FAILED); return op; } @@ -134,6 +137,8 @@ public static void Install(IReadOnlyList packages, bool? elevated = nu var options = await InstallationOptions.FromPackageAsync(package, elevated, interactive, no_integrity); var op = new UpdatePackageOperation(package, options, ignoreParallel, req); Add(op); + op.OperationSucceeded += (_, _) => TelemetryHandler.UpdatePackage(package, TelemetryHandler.OP_RESULT.SUCCESS); + op.OperationFailed += (_, _) => TelemetryHandler.UpdatePackage(package, TelemetryHandler.OP_RESULT.FAILED); return op; } @@ -171,6 +176,8 @@ public static async void ConfirmAndUninstall(IPackage? package, bool? elevated = var options = await InstallationOptions.FromPackageAsync(package, elevated, interactive, remove_data: remove_data); var op = new UninstallPackageOperation(package, options, ignoreParallel, req); Add(op); + op.OperationSucceeded += (_, _) => TelemetryHandler.UninstallPackage(package, TelemetryHandler.OP_RESULT.SUCCESS); + op.OperationFailed += (_, _) => TelemetryHandler.UninstallPackage(package, TelemetryHandler.OP_RESULT.FAILED); return op; }