mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-05-15 05:34:10 +02:00
65 lines
1.5 KiB
C#
65 lines
1.5 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.IO;
|
|
using System.Net;
|
|
|
|
namespace TweetLib.Core.Utils {
|
|
public static class WebUtils {
|
|
private static bool hasMicrosoftBeenBroughtTo2008Yet;
|
|
private static bool hasSystemProxyBeenEnabled;
|
|
|
|
private static void EnsureTLS12() {
|
|
if (!hasMicrosoftBeenBroughtTo2008Yet) {
|
|
ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
|
|
ServicePointManager.SecurityProtocol &= ~(SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11);
|
|
hasMicrosoftBeenBroughtTo2008Yet = true;
|
|
}
|
|
}
|
|
|
|
private static bool UseSystemProxy { get; set; } = false;
|
|
|
|
public static void EnableSystemProxy() {
|
|
if (!hasSystemProxyBeenEnabled) {
|
|
UseSystemProxy = true;
|
|
hasSystemProxyBeenEnabled = true;
|
|
}
|
|
}
|
|
|
|
public static WebClient NewClient(string userAgent) {
|
|
EnsureTLS12();
|
|
|
|
WebClient client = new WebClient();
|
|
|
|
if (!UseSystemProxy) {
|
|
client.Proxy = null;
|
|
}
|
|
|
|
client.Headers[HttpRequestHeader.UserAgent] = userAgent;
|
|
return client;
|
|
}
|
|
|
|
public static AsyncCompletedEventHandler FileDownloadCallback(string file, Action? onSuccess, Action<Exception>? onFailure) {
|
|
return (sender, args) => {
|
|
if (args.Cancelled) {
|
|
TryDeleteFile(file);
|
|
}
|
|
else if (args.Error != null) {
|
|
TryDeleteFile(file);
|
|
onFailure?.Invoke(args.Error);
|
|
}
|
|
else {
|
|
onSuccess?.Invoke();
|
|
}
|
|
};
|
|
}
|
|
|
|
private static void TryDeleteFile(string file) {
|
|
try {
|
|
File.Delete(file);
|
|
} catch {
|
|
// didn't want it deleted anyways
|
|
}
|
|
}
|
|
}
|
|
}
|