diff --git a/~Proxy/ProxyClient.cs b/~Proxy/ProxyClient.cs
index 15eb713..1181dc4 100644
--- a/~Proxy/ProxyClient.cs
+++ b/~Proxy/ProxyClient.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.Net.Sockets;
using System.Security;
using System.Text;
@@ -257,7 +258,18 @@ internal protected ProxyClient(ProxyType proxyType, string address, int port, st
#endregion
- #region Статические методы (открытые)
+ #region Статические методы
+ ///
+ /// Служит для преобразования строковых прокси к объекту ProxyClient.
+ ///
+ private static readonly Dictionary ProxyProtocol = new Dictionary {
+ { "http", ProxyType.Http },
+ { "https", ProxyType.Http },
+ { "socks4", ProxyType.Socks4 },
+ { "socks4a", ProxyType.Socks4a },
+ { "socks5", ProxyType.Socks5 },
+ { "socks", ProxyType.Socks5 }
+ };
///
/// Преобразует строку в экземпляр класса прокси-клиента, унаследованный от .
@@ -334,6 +346,23 @@ public static ProxyClient Parse(ProxyType proxyType, string proxyAddress)
return ProxyHelper.CreateProxyClient(proxyType, host, port, username, password);
}
+ ///
+ /// Строка вида - протокол://хост:порт:имя_пользователя:пароль. Три последних параметра являются необязательными.
+ /// Экземпляр класса прокси-клиента, унаследованный от .
+ public static ProxyClient Parse(string protoProxyAddress)
+ {
+ var proxy = protoProxyAddress.Split(new[] { "://" }, StringSplitOptions.RemoveEmptyEntries);
+ if (proxy.Length < 2)
+ return null;
+
+ string proto = proxy[0];
+ if (!ProxyProtocol.ContainsKey(proto))
+ return null;
+
+ var proxyType = ProxyProtocol[proto];
+ return Parse(proxyType, proxy[1]);
+ }
+
///
/// Преобразует строку в экземпляр класса прокси-клиента, унаследованный от . Возвращает значение, указывающее, успешно ли выполнено преобразование.
///
@@ -392,6 +421,22 @@ public static bool TryParse(ProxyType proxyType, string proxyAddress, out ProxyC
return true;
}
+ ///
+ /// Строка вида - протокол://хост:порт:имя_пользователя:пароль. Три последних параметра являются необязательными.
+ /// Значение , если параметр преобразован успешно, иначе .
+ public static bool TryParse(string protoProxyAddress, out ProxyClient result)
+ {
+ var proxy = protoProxyAddress.Split(new[] {"://"}, StringSplitOptions.RemoveEmptyEntries);
+ if (proxy.Length < 2 || !ProxyProtocol.ContainsKey(proxy[0]))
+ {
+ result = null;
+ return false;
+ }
+
+ var proxyType = ProxyProtocol[proxy[0]];
+ return TryParse(proxyType, proxy[1], out result);
+ }
+
#endregion