diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index d72263c42..119f7ec79 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -377,7 +377,7 @@ private void RegisterMenuClosing() private void AfterSettingsJobs() { - Uploader.ProxyInfo = Program.Settings.ProxySettings; + ProxyInfo.Current = Program.Settings.ProxySettings; ClipboardHelpers.UseAlternativeCopyImage = Program.Settings.UseAlternativeClipboardCopyImage; } @@ -409,6 +409,16 @@ private void UpdateUploaderMenuNames() tsmiSocialServices.Text = tsmiTraySocialServices.Text = "Social networking service: " + Program.DefaultTaskSettings.SocialNetworkingServiceDestination.GetDescription(); } + private void AutoCheckUpdate() + { + if (Program.Settings.AutoCheckUpdate) + { + Thread updateThread = new Thread(CheckUpdate); + updateThread.IsBackground = true; + updateThread.Start(); + } + } + private void CheckUpdate() { UpdateChecker updateChecker = TaskHelpers.CheckUpdate(); @@ -427,16 +437,6 @@ private void CheckUpdate() } } - private void AutoCheckUpdate() - { - if (Program.Settings.AutoCheckUpdate) - { - Thread updateThread = new Thread(CheckUpdate); - updateThread.IsBackground = true; - updateThread.Start(); - } - } - private void ForceClose() { forceClose = true; diff --git a/ShareX/TaskHelpers.cs b/ShareX/TaskHelpers.cs index eec820ba5..acf34ea64 100644 --- a/ShareX/TaskHelpers.cs +++ b/ShareX/TaskHelpers.cs @@ -323,15 +323,15 @@ public static UpdateChecker CheckUpdate() { UpdateChecker updateChecker = new GitHubUpdateChecker("ShareX", "ShareX"); updateChecker.CurrentVersion = Program.AssemblyVersion; - updateChecker.Proxy = Uploader.ProxyInfo.GetWebProxy(); + updateChecker.Proxy = ProxyInfo.Current.GetWebProxy(); updateChecker.CheckUpdate(); - // Backup if GitHub API fails + // Fallback if GitHub API fails if (updateChecker.UpdateInfo == null || updateChecker.UpdateInfo.Status == UpdateStatus.UpdateCheckFailed) { updateChecker = new XMLUpdateChecker("https://raw.github.com/ShareX/ShareX/master/Update.xml", "ShareX"); updateChecker.CurrentVersion = Program.AssemblyVersion; - updateChecker.Proxy = Uploader.ProxyInfo.GetWebProxy(); + updateChecker.Proxy = ProxyInfo.Current.GetWebProxy(); updateChecker.CheckUpdate(); } diff --git a/UploadersLib/FileUploaders/FTP.cs b/UploadersLib/FileUploaders/FTP.cs index 261442883..0cdebf156 100644 --- a/UploadersLib/FileUploaders/FTP.cs +++ b/UploadersLib/FileUploaders/FTP.cs @@ -72,9 +72,9 @@ public FTP(FTPAccount account, int bufferSize = 8192) Client.DataTransferMode = account.IsActive ? TransferMode.Active : TransferMode.Passive; - if (Uploader.ProxyInfo != null) + if (ProxyInfo.Current != null) { - IProxyClient proxy = Uploader.ProxyInfo.GetProxyClient(); + IProxyClient proxy = ProxyInfo.Current.GetProxyClient(); if (proxy != null) { diff --git a/UploadersLib/ProxyInfo.cs b/UploadersLib/ProxyInfo.cs index 977c073f0..98fd0ac64 100644 --- a/UploadersLib/ProxyInfo.cs +++ b/UploadersLib/ProxyInfo.cs @@ -31,6 +31,25 @@ namespace UploadersLib { public class ProxyInfo { + private static ProxyInfo current; + + public static ProxyInfo Current + { + get + { + if (current == null) + { + current = new ProxyInfo(); + } + + return current; + } + set + { + current = value; + } + } + public ProxyMethod ProxyMethod { get; set; } public string Username { get; set; } public string Password { get; set; } diff --git a/UploadersLib/TextUploaders/Gist.cs b/UploadersLib/TextUploaders/Gist.cs index e6aadaa21..ee9491563 100644 --- a/UploadersLib/TextUploaders/Gist.cs +++ b/UploadersLib/TextUploaders/Gist.cs @@ -23,17 +23,15 @@ #endregion License Information (GPL v3) +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Net; +using UploadersLib.HelperClasses; + namespace UploadersLib.TextUploaders { - using System; - using System.Collections.Generic; - using System.Collections.Specialized; - using System.Net; - - using Newtonsoft.Json; - - using UploadersLib.HelperClasses; - public sealed class Gist : TextUploader { private readonly Uri GistUri = new Uri("https://api.github.com/gists"); @@ -82,7 +80,7 @@ public bool GetAccessToken(string code) WebHeaderCollection headers = new WebHeaderCollection(); headers.Add("Accept", "application/json"); - + string response = this.SendPostRequest(this.GistCompleteUri.ToString(), args, headers: headers); if (!string.IsNullOrEmpty(response)) @@ -98,7 +96,7 @@ public bool GetAccessToken(string code) return false; } - + public override UploadResult UploadText(string text, string fileName) { UploadResult ur = new UploadResult(); diff --git a/UploadersLib/Uploader.cs b/UploadersLib/Uploader.cs index 3f8bfa366..65d9e71ff 100644 --- a/UploadersLib/Uploader.cs +++ b/UploadersLib/Uploader.cs @@ -40,7 +40,6 @@ namespace UploadersLib { public class Uploader { - public static ProxyInfo ProxyInfo = new ProxyInfo(); public static string UserAgent = string.Format("{0} {1}", Application.ProductName, Application.ProductVersion); public delegate void ProgressEventHandler(ProgressManager progress); @@ -64,11 +63,6 @@ public Uploader() ServicePointManager.DefaultConnectionLimit = 25; ServicePointManager.Expect100Continue = false; ServicePointManager.UseNagleAlgorithm = false; - - if (ProxyInfo == null) - { - ProxyInfo = new ProxyInfo(); - } } protected void OnProgressChanged(ProgressManager progress) @@ -353,7 +347,7 @@ private HttpWebResponse GetResponseUsingDelete(string url, Dictionary