diff --git a/octorun/src/bin/app-usage.js b/octorun/src/bin/app-usage.js index e8caf544f..0fb32b691 100644 --- a/octorun/src/bin/app-usage.js +++ b/octorun/src/bin/app-usage.js @@ -44,9 +44,6 @@ if (fileContents && host) { 'Content-Type': 'application/json' } }; - if (config.token) { - options.headers['Authorization'] = 'token ' + config.token; - } var req = https.request(options, function (res) { var success = res.statusCode == 200; diff --git a/octorun/version b/octorun/version index 820d50296..94ac57c5f 100644 --- a/octorun/version +++ b/octorun/version @@ -1 +1 @@ -f497f7aa3d \ No newline at end of file +bd66a20a \ No newline at end of file diff --git a/script b/script index 0c618caaa..38269e987 160000 --- a/script +++ b/script @@ -1 +1 @@ -Subproject commit 0c618caaab7f163921aea7b60484b423e13cb818 +Subproject commit 38269e987adabd0f42dda353872a46a5e206caea diff --git a/src/GitHub.Api/Application/ApiClient.cs b/src/GitHub.Api/Application/ApiClient.cs index 065c86c85..01d189def 100644 --- a/src/GitHub.Api/Application/ApiClient.cs +++ b/src/GitHub.Api/Application/ApiClient.cs @@ -205,7 +205,7 @@ public void ContinueLogin(LoginResult loginResult, string code) .Start(); } - private GitHubUser GetCurrentUser() + public GitHubUser GetCurrentUser() { var keychainConnection = keychain.Connections.FirstOrDefault(x => x.Host == OriginalUrl); if (keychainConnection == null) diff --git a/src/GitHub.Api/Application/ApplicationManagerBase.cs b/src/GitHub.Api/Application/ApplicationManagerBase.cs index 76f8d59a1..80f9fe666 100644 --- a/src/GitHub.Api/Application/ApplicationManagerBase.cs +++ b/src/GitHub.Api/Application/ApplicationManagerBase.cs @@ -48,7 +48,7 @@ protected void Initialize() ApplicationConfiguration.GitTimeout = UserSettings.Get(Constants.GitTimeoutKey, ApplicationConfiguration.GitTimeout); Platform.Initialize(ProcessManager, TaskManager); progress.OnProgress += progressReporter.UpdateProgress; - UsageTracker = new UsageTracker(TaskManager, GitClient, ProcessManager, UserSettings, Environment, InstanceId.ToString()); + UsageTracker = new UsageTracker(TaskManager, GitClient, ProcessManager, UserSettings, Environment, Platform.Keychain, InstanceId.ToString()); #if ENABLE_METRICS var metricsService = new MetricsService(ProcessManager, diff --git a/src/GitHub.Api/Installer/OctorunInstaller.cs b/src/GitHub.Api/Installer/OctorunInstaller.cs index 9c5364eb1..e1f92252b 100644 --- a/src/GitHub.Api/Installer/OctorunInstaller.cs +++ b/src/GitHub.Api/Installer/OctorunInstaller.cs @@ -85,7 +85,7 @@ public class OctorunInstallDetails public const string DefaultZipMd5Url = "http://github-vs.s3.amazonaws.com/unity/octorun/octorun.zip.md5"; public const string DefaultZipUrl = "http://github-vs.s3.amazonaws.com/unity/octorun/octorun.zip"; - public const string PackageVersion = "f497f7aa3d"; + public const string PackageVersion = "bd66a20a"; private const string PackageName = "octorun"; private const string zipFile = "octorun.zip"; diff --git a/src/GitHub.Api/Metrics/UsageModel.cs b/src/GitHub.Api/Metrics/UsageModel.cs index 123146465..91a02c1d2 100644 --- a/src/GitHub.Api/Metrics/UsageModel.cs +++ b/src/GitHub.Api/Metrics/UsageModel.cs @@ -22,6 +22,7 @@ public class Dimensions public string UnityVersion { get; set; } public string Lang { get; set; } public string CurrentLang { get; set; } + public string GitHubUser { get; set; } } public class Measures diff --git a/src/GitHub.Api/Metrics/UsageTracker.cs b/src/GitHub.Api/Metrics/UsageTracker.cs index 08c515b21..ca68471cc 100644 --- a/src/GitHub.Api/Metrics/UsageTracker.cs +++ b/src/GitHub.Api/Metrics/UsageTracker.cs @@ -8,6 +8,13 @@ namespace GitHub.Unity { class UsageTrackerSync : IUsageTracker { + +#if DEVELOPER_BUILD + protected internal const int MetrisReportTimeout = 30; +#else + protected internal const int MetrisReportTimeout = 3 * 60; +#endif + private static ILogging Logger { get; } = LogHelper.GetLogger(); private static object _lock = new object(); @@ -44,7 +51,7 @@ public UsageTrackerSync(ISettings userSettings, IUsageLoader usageLoader, Logger.Trace("userId:{0} instanceId:{1}", userId, instanceId); if (Enabled) - RunTimer(3 * 60); + RunTimer(MetrisReportTimeout); } private void RunTimer(int seconds) @@ -94,6 +101,11 @@ private void SendUsage() return; } + var username = GetUsername(); + if (!String.IsNullOrEmpty(username)) { + extractReports.ForEach(x => x.Dimensions.GitHubUser = username); + } + try { MetricsService.PostUsage(extractReports); @@ -316,6 +328,11 @@ public virtual void UpdateLfsDiskUsage(int kilobytes) } } + protected virtual string GetUsername() + { + return ""; + } + public bool Enabled { get @@ -344,7 +361,9 @@ class UsageTracker : UsageTrackerSync { public UsageTracker(ITaskManager taskManager, IGitClient gitClient, IProcessManager processManager, ISettings userSettings, - IEnvironment environment, string instanceId) + IEnvironment environment, + IKeychain keychain, + string instanceId) : base(userSettings, new UsageLoader(environment.UserCachePath.Combine(Constants.UsageFile)), environment.UnityVersion, instanceId) @@ -353,6 +372,7 @@ public UsageTracker(ITaskManager taskManager, IGitClient gitClient, IProcessMana Environment = environment; GitClient = gitClient; ProcessManager = processManager; + Keychain = keychain; } protected override void CaptureRepoSize() @@ -377,6 +397,18 @@ protected override void CaptureRepoSize() catch {} } + protected override string GetUsername() + { + string username = ""; + try { + var apiClient = new ApiClient("", Keychain, ProcessManager, TaskManager, Environment); + var user = apiClient.GetCurrentUser(); + username = user.Login; + } catch { + } + return username; + } + public override void IncrementApplicationMenuMenuItemCommandLine() => TaskManager.Run(base.IncrementApplicationMenuMenuItemCommandLine); public override void IncrementAuthenticationViewButtonAuthentication() => TaskManager.Run(base.IncrementAuthenticationViewButtonAuthentication); public override void IncrementBranchesViewButtonCheckoutLocalBranch() => TaskManager.Run(base.IncrementBranchesViewButtonCheckoutLocalBranch); @@ -400,6 +432,7 @@ protected override void CaptureRepoSize() protected IEnvironment Environment { get; } protected IGitClient GitClient { get; } public IProcessManager ProcessManager { get; } + protected IKeychain Keychain { get; } } interface IUsageLoader diff --git a/src/GitHub.Api/Resources/octorun.zip b/src/GitHub.Api/Resources/octorun.zip index 791c35d52..5284a6d79 100644 --- a/src/GitHub.Api/Resources/octorun.zip +++ b/src/GitHub.Api/Resources/octorun.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c7287864b7d86835175494c3743832f47a10481ab7fb1c257f871b808744e448 -size 1399629 +oid sha256:95a82d30f9e3a3f1eaec7d4a382983748d35320b87a2ec91134beb5d75738af3 +size 1399526 diff --git a/src/GitHub.Api/Resources/octorun.zip.md5 b/src/GitHub.Api/Resources/octorun.zip.md5 index 7e86214a0..3f4ad43f2 100644 --- a/src/GitHub.Api/Resources/octorun.zip.md5 +++ b/src/GitHub.Api/Resources/octorun.zip.md5 @@ -1 +1 @@ -a41ad2fd5ceaacb20574a0fc2841e82d \ No newline at end of file +f6865e64072e9b65fa31ac9087fe1363 \ No newline at end of file diff --git a/src/tests/TestWebServer/HttpServer.cs b/src/tests/TestWebServer/HttpServer.cs index 8f4765abb..1693b6da4 100644 --- a/src/tests/TestWebServer/HttpServer.cs +++ b/src/tests/TestWebServer/HttpServer.cs @@ -8,6 +8,7 @@ using System.Net.Sockets; using System.Text; using System.Threading; +using Newtonsoft.Json; namespace TestWebServer { @@ -106,6 +107,18 @@ private void Process(HttpListenerContext context) if (context.Request.Url.AbsolutePath == "/api/usage/unity") { + var streamReader = new StreamReader(context.Request.InputStream); + string body = null; + using (streamReader) + { + body = streamReader.ReadToEnd(); + } + + var parsedJson = JsonConvert.DeserializeObject(body); + var formattedJson = JsonConvert.SerializeObject(parsedJson, Formatting.Indented); + + Logger.Info(formattedJson); + var json = new { result = "Cool unity usage" }.ToJson(); context.Response.StatusCode = (int)HttpStatusCode.OK; context.Response.ContentLength64 = json.Length; diff --git a/src/tests/TestWebServer/TestWebServer.csproj b/src/tests/TestWebServer/TestWebServer.csproj index c8d6cffad..8cc2ce5f1 100644 --- a/src/tests/TestWebServer/TestWebServer.csproj +++ b/src/tests/TestWebServer/TestWebServer.csproj @@ -31,6 +31,9 @@ 4 + + ..\..\..\packages\Newtonsoft.Json.11.0.2\lib\net35\Newtonsoft.Json.dll + @@ -81,6 +84,7 @@ PreserveNewest + diff --git a/src/tests/TestWebServer/packages.config b/src/tests/TestWebServer/packages.config new file mode 100644 index 000000000..9eecb30ef --- /dev/null +++ b/src/tests/TestWebServer/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file