From 5f59aca62c46210efb68e8afdbe71b20aa4268da Mon Sep 17 00:00:00 2001 From: Dominik Viererbe Date: Tue, 25 Feb 2020 16:30:08 +0100 Subject: [PATCH] Added MqttClientUnsubscribeOptionsBuilder analogous to MqttClientSubscribeOptionsBuilder --- .../MqttClientUnsubscribeOptionsBuilder.cs | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptionsBuilder.cs diff --git a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptionsBuilder.cs b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptionsBuilder.cs new file mode 100644 index 0000000..96c178f --- /dev/null +++ b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptionsBuilder.cs @@ -0,0 +1,60 @@ +using MQTTnet.Packets; +using System; +using System.Collections.Generic; +using System.Text; + +namespace MQTTnet.Client.Unsubscribing +{ + public class MqttClientUnsubscribeOptionsBuilder + { + private readonly MqttClientUnsubscribeOptions _unsubscribeOptions = new MqttClientUnsubscribeOptions(); + + public MqttClientUnsubscribeOptionsBuilder WithUserProperty(string name, string value) + { + if (name is null) throw new ArgumentNullException(nameof(name)); + if (value is null) throw new ArgumentNullException(nameof(value)); + + return WithUserProperty(new MqttUserProperty(name, value)); + } + + public MqttClientUnsubscribeOptionsBuilder WithUserProperty(MqttUserProperty userProperty) + { + if (userProperty is null) throw new ArgumentNullException(nameof(userProperty)); + + if (_unsubscribeOptions.UserProperties is null) + { + _unsubscribeOptions.UserProperties = new List(); + } + + _unsubscribeOptions.UserProperties.Add(userProperty); + + return this; + } + + public MqttClientUnsubscribeOptionsBuilder WithTopicFilter(string topic) + { + if (topic is null) throw new ArgumentNullException(nameof(topic)); + + if (_unsubscribeOptions.TopicFilters is null) + { + _unsubscribeOptions.TopicFilters = new List(); + } + + _unsubscribeOptions.TopicFilters.Add(topic); + + return this; + } + + public MqttClientUnsubscribeOptionsBuilder WithTopicFilter(TopicFilter topicFilter) + { + if (topicFilter is null) throw new ArgumentNullException(nameof(topicFilter)); + + return WithTopic(topicFilter.Topic); + } + + public MqttClientUnsubscribeOptions Build() + { + return _unsubscribeOptions; + } + } +}