Add proxy settings for WebSocket connections for .NET 451 and 461

This commit is contained in:
Marius Ruginosu
2018-07-18 10:51:45 +03:00
parent 23ae8ab3b5
commit fa34908d82
4 changed files with 73 additions and 1 deletions
@@ -76,6 +76,29 @@ namespace MQTTnet.Client
return this;
}
#if NET452 || NET461
public MqttClientOptionsBuilder WithProxy(string address, string username = null, string password = null, string domain = null, bool bypassOnLocal = false, string[] bypassList = null)
{
if (_webSocketOptions == null)
{
throw new InvalidOperationException("A WebSocket channel must be set if MqttClientWebSocketProxy is configured.");
}
_webSocketOptions.MqttClientWebSocketProxy = new MqttClientWebSocketProxyOptions
{
Address = address,
Username = username,
Password = password,
Domain = domain,
BypassOnLocal = bypassOnLocal,
BypassList = bypassList
};
return this;
}
#endif
public MqttClientOptionsBuilder WithWebSocketServer(string uri)
{
_webSocketOptions = new MqttClientWebSocketOptions
@@ -13,6 +13,10 @@ namespace MQTTnet.Client
public CookieContainer CookieContainer { get; set; }
#if NET452 || NET461
public MqttClientWebSocketProxyOptions MqttClientWebSocketProxy { get; set; } = new MqttClientWebSocketProxyOptions();
#endif
public MqttClientTlsOptions TlsOptions { get; set; } = new MqttClientTlsOptions();
public override string ToString()
@@ -0,0 +1,21 @@
#if NET452 || NET461
namespace MQTTnet.Client
{
public class MqttClientWebSocketProxyOptions
{
public string Address { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string Domain { get; set; }
public bool BypassOnLocal { get; set; } = true;
public string[] BypassList { get; set; }
}
}
#endif