From 6fd6abbbf5d6ccda9d75c176e61e5eb10b988541 Mon Sep 17 00:00:00 2001 From: fahminlb33 Date: Sun, 6 Sep 2020 10:50:01 +0700 Subject: [PATCH] Update telemetry API --- src/KFlearning.Core/API/TelemetryClient.cs | 51 +++++++++++-------- .../Services/SystemInfoService.cs | 6 +-- src/KFlearning/Services/TelemetryService.cs | 4 +- .../Services/TelemetryService.cs | 4 +- src/KFmaintenance/Views/StartupForm.cs | 2 +- 5 files changed, 37 insertions(+), 30 deletions(-) diff --git a/src/KFlearning.Core/API/TelemetryClient.cs b/src/KFlearning.Core/API/TelemetryClient.cs index 4b1708b..0c0ad45 100644 --- a/src/KFlearning.Core/API/TelemetryClient.cs +++ b/src/KFlearning.Core/API/TelemetryClient.cs @@ -8,18 +8,20 @@ // This file is part of KFlearning, see LICENSE. // See this code in repository URL above! +using Newtonsoft.Json; using System; using System.Globalization; using System.Net.Http; +using System.Text; using System.Threading.Tasks; namespace KFlearning.Core.API { public interface ITelemetryClient { - Task SendAppStart(DateTime dateTime, string appName, string deviceId); - Task SendAppExit(DateTime dateTime, string appName, string deviceId); - Task SendIdentification(string deviceId, string cpu, string ram, string os, string bitness); + Task SendAppStart(string appName, string deviceId); + Task SendAppExit(string appName, string deviceId); + Task SendIdentification(string deviceId, string cpu, double ram, string os, string bitness); } public class TelemetryClient : ITelemetryClient @@ -33,41 +35,46 @@ static TelemetryClient() Client.DefaultRequestHeaders.Add("Authorization", "fahmi-kodesiana"); } - public async Task SendAppStart(DateTime dateTime, string appName, string deviceId) + public async Task SendAppStart(string appName, string deviceId) { - await SendTelemetry(dateTime, appName, "started", deviceId); + await SendTelemetry(appName, "started", deviceId); } - public async Task SendAppExit(DateTime dateTime, string appName, string deviceId) + public async Task SendAppExit(string appName, string deviceId) { - await SendTelemetry(dateTime, appName, "exit", deviceId); + await SendTelemetry(appName, "exit", deviceId); } - public async Task SendIdentification(string deviceId, string cpu, string ram, string os, string bitness) + public async Task SendIdentification(string deviceId, string cpu, double ram, string os, string bitness) { - using (var content = new MultipartFormDataContent()) + var body = new { - content.Add(new StringContent(deviceId), "device_id"); - content.Add(new StringContent(cpu), "cpu"); - content.Add(new StringContent(ram), "ram"); - content.Add(new StringContent(os), "os"); - content.Add(new StringContent(bitness), "bitness"); + deviceId, + cpu, + os, + ram, + bitness + }; - var result = await Client.PostAsync(BaseUri + "/api/identification.php", content); + using (var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json")) + { + var result = await Client.PostAsync(BaseUri + "/telemetry/device", content); result.EnsureSuccessStatusCode(); } } - private async Task SendTelemetry(DateTime dateTime, string appName, string appEvent, string deviceId) + private async Task SendTelemetry(string appName, string appEvent, string deviceId) { - using (var content = new MultipartFormDataContent()) + var body = new { - content.Add(new StringContent(dateTime.ToUnixTime().ToString(_culture)), "timestamp"); - content.Add(new StringContent(deviceId), "device_id"); - content.Add(new StringContent(appName), "app_name"); - content.Add(new StringContent(appEvent), "event"); + deviceId, + appName, + intent = appEvent + }; - var result = await Client.PostAsync(BaseUri + "/api/telemetry.php", content); + using (var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json")) + { + var result = await Client.PostAsync(BaseUri + "/telemetry/intent", content); result.EnsureSuccessStatusCode(); } } diff --git a/src/KFlearning.Core/Services/SystemInfoService.cs b/src/KFlearning.Core/Services/SystemInfoService.cs index c62078b..ffb1af4 100644 --- a/src/KFlearning.Core/Services/SystemInfoService.cs +++ b/src/KFlearning.Core/Services/SystemInfoService.cs @@ -22,7 +22,7 @@ public interface ISystemInfoService string OS { get; } string OSVersion { get; } string Architecture { get; } - string RAM { get; } + double RAM { get; } string CPU { get; } void Query(); @@ -46,7 +46,7 @@ public void Query() OS = queryObj["Caption"].ToString(); OSVersion = queryObj["Version"].ToString(); Architecture = queryObj["OSArchitecture"].ToString(); - RAM = queryObj["TotalVisibleMemorySize"].ToString(); + RAM = Convert.ToDouble(queryObj["TotalVisibleMemorySize"].ToString()); deviceId = queryObj["TotalVisibleMemorySize"].ToString(); // CPU info @@ -86,7 +86,7 @@ private ManagementBaseObject SearchWmi(string scope, string query) public string OS { get; private set; } = "-"; public string OSVersion { get; private set; } = "-"; public string Architecture { get; private set; } = "-"; - public string RAM { get; private set; } = "-"; + public double RAM { get; private set; } = 0; public string CPU { get; private set; } = "-"; } } \ No newline at end of file diff --git a/src/KFlearning/Services/TelemetryService.cs b/src/KFlearning/Services/TelemetryService.cs index d372522..395180b 100644 --- a/src/KFlearning/Services/TelemetryService.cs +++ b/src/KFlearning/Services/TelemetryService.cs @@ -36,7 +36,7 @@ public void Load() try { _infoService.Query(); - Task.WaitAll(_telemetry.SendAppStart(DateTime.Now, Resources.AppName, _infoService.DeviceId), + Task.WaitAll(_telemetry.SendAppStart(Resources.AppName, _infoService.DeviceId), _telemetry.SendIdentification(_infoService.DeviceId, _infoService.CPU, _infoService.RAM, _infoService.OS, _infoService.Architecture)); } @@ -51,7 +51,7 @@ public void Save() try { _infoService.Query(); - Task.WaitAll(_telemetry.SendAppExit(DateTime.Now, Resources.AppName, _infoService.DeviceId)); + Task.WaitAll(_telemetry.SendAppExit(Resources.AppName, _infoService.DeviceId)); } catch (Exception) { diff --git a/src/KFmaintenance/Services/TelemetryService.cs b/src/KFmaintenance/Services/TelemetryService.cs index 10feefc..54ad6c8 100644 --- a/src/KFmaintenance/Services/TelemetryService.cs +++ b/src/KFmaintenance/Services/TelemetryService.cs @@ -26,7 +26,7 @@ public void Load() try { _infoService.Query(); - Task.WaitAll(_telemetry.SendAppStart(DateTime.Now, Resources.AppName, _infoService.DeviceId), + Task.WaitAll(_telemetry.SendAppStart(Resources.AppName, _infoService.DeviceId), _telemetry.SendIdentification(_infoService.DeviceId, _infoService.CPU, _infoService.RAM, _infoService.OS, _infoService.Architecture)); } @@ -41,7 +41,7 @@ public void Save() try { _infoService.Query(); - Task.WaitAll(_telemetry.SendAppExit(DateTime.Now, Resources.AppName, _infoService.DeviceId)); + Task.WaitAll(_telemetry.SendAppExit(Resources.AppName, _infoService.DeviceId)); } catch (Exception) { diff --git a/src/KFmaintenance/Views/StartupForm.cs b/src/KFmaintenance/Views/StartupForm.cs index 538e952..5f70fde 100644 --- a/src/KFmaintenance/Views/StartupForm.cs +++ b/src/KFmaintenance/Views/StartupForm.cs @@ -52,7 +52,7 @@ protected override void OnLoad(EventArgs e) lblOS.Text = _infoService.OS; lblOSVersion.Text = _infoService.OSVersion; lblOSArch.Text = _infoService.Architecture; - lblRam.Text = _infoService.RAM; + lblRam.Text = _infoService.RAM.ToString(); lblCpu.Text = _infoService.CPU; // system registry