Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit aeb7dbb

Browse files
committed
Make the web request timeout configurable from the UI
1 parent 6ebff33 commit aeb7dbb

File tree

8 files changed

+42
-8
lines changed

8 files changed

+42
-8
lines changed

script

src/GitHub.Api/Application/ApiClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public static IApiClient Create(UriString repositoryUrl, IKeychain keychain)
1717
var hostAddress = HostAddress.Create(repositoryUrl);
1818

1919
return new ApiClient(repositoryUrl, keychain,
20-
new GitHubClient(AppConfiguration.ProductHeader, credentialStore, hostAddress.ApiUri));
20+
new GitHubClient(ApplicationConfiguration.ProductHeader, credentialStore, hostAddress.ApiUri));
2121
}
2222

2323
private static readonly ILogging logger = Logging.GetLogger<ApiClient>();

src/GitHub.Api/Application/AppConfiguration.cs renamed to src/GitHub.Api/Application/ApplicationConfiguration.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33

44
namespace GitHub.Unity
55
{
6-
static class AppConfiguration
6+
public static class ApplicationConfiguration
77
{
8-
static AppConfiguration()
8+
static ApplicationConfiguration()
99
{
10-
var executingAssembly = typeof(AppConfiguration).Assembly;
10+
var executingAssembly = typeof(ApplicationConfiguration).Assembly;
1111
AssemblyName = executingAssembly.GetName();
1212
ProductHeader = new ProductHeaderValue(ApplicationInfo.ApplicationSafeName, AssemblyName.Version.ToString());
1313
}
@@ -21,5 +21,12 @@ static AppConfiguration()
2121
/// The product header used in the user agent.
2222
/// </summary>
2323
public static ProductHeaderValue ProductHeader { get; private set; }
24+
25+
private static int webTimeout = 3000;
26+
public static int WebTimeout
27+
{
28+
get { return webTimeout; }
29+
set { webTimeout = value; }
30+
}
2431
}
2532
}

src/GitHub.Api/GitHub.Api.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898
<ItemGroup>
9999
<Compile Include="Application\ApplicationInfo.cs" />
100100
<Compile Include="Application\LoginResult.cs" />
101-
<Compile Include="Application\AppConfiguration.cs" />
101+
<Compile Include="Application\ApplicationConfiguration.cs" />
102102
<Compile Include="Application\OctokitExtensions.cs" />
103103
<Compile Include="Application\Organization.cs" />
104104
<Compile Include="Cache\CacheInterfaces.cs" />

src/GitHub.Api/Helpers/Constants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ static class Constants
99
public const string UsageFile = "usage.json";
1010
public const string GitInstallPathKey = "GitInstallPath";
1111
public const string TraceLoggingKey = "EnableTraceLogging";
12+
public const string WebTimeoutKey = "WebTimeout";
1213
public const string Iso8601Format = "yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz";
1314

1415
public static readonly Version MinimumGitVersion = new Version(2, 11, 0);

src/GitHub.Api/IO/Utils.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public static bool Download(ILogging logger, UriString url,
9999
}
100100

101101
webRequest.Method = "GET";
102-
webRequest.Timeout = 5000;
102+
webRequest.Timeout = ApplicationConfiguration.WebTimeout;
103103

104104
if (expectingResume)
105105
logger.Trace($"Resuming download of {url}");

src/GitHub.Api/Metrics/UsageTracker.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ public void IncrementLaunchCount()
167167
usage.NumberOfStartups++;
168168
usage.UnityVersion = unityVersion;
169169
usage.Lang = CultureInfo.InstalledUICulture.IetfLanguageTag;
170-
usage.AppVersion = AppConfiguration.AssemblyName.Version.ToString();
170+
usage.AppVersion = ApplicationConfiguration.AssemblyName.Version.ToString();
171171

172172
Logger.Trace("IncrementLaunchCount Date:{0} NumberOfStartups:{1}", usage.Date, usage.NumberOfStartups);
173173

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/SettingsView.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System;
33
using System.Collections.Generic;
44
using System.Linq;
5+
using System.Text.RegularExpressions;
56
using UnityEditor;
67
using UnityEngine;
78

@@ -13,8 +14,10 @@ class SettingsView : Subview
1314
private const string GitRepositoryTitle = "Repository Configuration";
1415
private const string GitRepositoryRemoteLabel = "Remote";
1516
private const string GitRepositorySave = "Save Repository";
17+
private const string GeneralSettingsTitle = "General";
1618
private const string DebugSettingsTitle = "Debug";
1719
private const string PrivacyTitle = "Privacy";
20+
private const string WebTimeoutLabel = "Timeout of web requests";
1821
private const string EnableTraceLoggingLabel = "Enable Trace Logging";
1922
private const string MetricsOptInLabel = "Help us improve by sending anonymous usage data";
2023
private const string DefaultRepositoryRemoteName = "origin";
@@ -37,6 +40,7 @@ class SettingsView : Subview
3740
[SerializeField] private string repositoryRemoteUrl;
3841
[SerializeField] private Vector2 scroll;
3942
[SerializeField] private UserSettingsView userSettingsView = new UserSettingsView();
43+
[SerializeField] private int webTimeout;
4044

4145
public override void InitializeView(IView parent)
4246
{
@@ -106,6 +110,7 @@ public override void OnGUI()
106110

107111
gitPathView.OnGUI();
108112
OnPrivacyGui();
113+
OnGeneralSettingsGui();
109114
OnLoggingSettingsGui();
110115
}
111116

@@ -336,6 +341,27 @@ private void OnLoggingSettingsGui()
336341
EditorGUI.EndDisabledGroup();
337342
}
338343

344+
private void OnGeneralSettingsGui()
345+
{
346+
GUILayout.Label(GeneralSettingsTitle, EditorStyles.boldLabel);
347+
348+
EditorGUI.BeginDisabledGroup(IsBusy);
349+
{
350+
webTimeout = ApplicationConfiguration.WebTimeout;
351+
EditorGUI.BeginChangeCheck();
352+
{
353+
webTimeout = EditorGUILayout.IntField(webTimeout, WebTimeoutLabel);
354+
}
355+
if (EditorGUI.EndChangeCheck())
356+
{
357+
ApplicationConfiguration.WebTimeout = webTimeout;
358+
Manager.UserSettings.Set(Constants.WebTimeoutKey, webTimeout);
359+
}
360+
}
361+
EditorGUI.EndDisabledGroup();
362+
}
363+
364+
339365
public override bool IsBusy
340366
{
341367
get { return isBusy || userSettingsView.IsBusy || gitPathView.IsBusy; }

0 commit comments

Comments
 (0)