From 0c13e7a5044394568a921de47fd86ae10fcb2b5d Mon Sep 17 00:00:00 2001 From: Charles Quesnel Date: Thu, 13 Dec 2018 12:56:47 -0500 Subject: [PATCH] Add overload to allow passing custom request headers and cookies when connecting with WS --- .../Client/MqttClientOptionsBuilder.cs | 19 +++++++++++++++++++ ...ClientOptionsBuilderWebSocketParameters.cs | 14 ++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 Source/MQTTnet/Client/MqttClientOptionsBuilderWebSocketParameters.cs diff --git a/Source/MQTTnet/Client/MqttClientOptionsBuilder.cs b/Source/MQTTnet/Client/MqttClientOptionsBuilder.cs index 85e2b4d8..e4754ad6 100644 --- a/Source/MQTTnet/Client/MqttClientOptionsBuilder.cs +++ b/Source/MQTTnet/Client/MqttClientOptionsBuilder.cs @@ -1,5 +1,7 @@ using System; +using System.Collections.Generic; using System.Linq; +using System.Net; using MQTTnet.Serializer; namespace MQTTnet.Client @@ -102,6 +104,23 @@ namespace MQTTnet.Client return this; } + public MqttClientOptionsBuilder WithWebSocketServer(string uri, MqttClientOptionsBuilderWebSocketParameters parameters) + { + if(parameters == null) + { + throw new ArgumentNullException(nameof(parameters)); + } + + _webSocketOptions = new MqttClientWebSocketOptions + { + Uri = uri, + RequestHeaders = parameters.RequestHeaders, + CookieContainer = parameters.CookierContainer + }; + + return this; + } + public MqttClientOptionsBuilder WithTls(MqttClientOptionsBuilderTlsParameters parameters) { _tlsParameters = parameters ?? throw new ArgumentNullException(nameof(parameters)); diff --git a/Source/MQTTnet/Client/MqttClientOptionsBuilderWebSocketParameters.cs b/Source/MQTTnet/Client/MqttClientOptionsBuilderWebSocketParameters.cs new file mode 100644 index 00000000..c58d7774 --- /dev/null +++ b/Source/MQTTnet/Client/MqttClientOptionsBuilderWebSocketParameters.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Net; +using System.Text; + +namespace MQTTnet.Client +{ + public class MqttClientOptionsBuilderWebSocketParameters + { + public IDictionary RequestHeaders { get; set; } + + public CookieContainer CookierContainer { get; set; } + } +}