// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. namespace MQTTnet.Extensions.Socks5; /// /// Sugar extensions for configuring a SOCKS5 proxy on the MQTT client options builder. /// public static class MqttClientOptionsBuilderExtensions { /// /// Configures the client to tunnel its TCP connection to the broker through a SOCKS5 /// proxy. A TCP transport (via WithTcpServer(...) or WithEndPoint(...)) /// must be configured first. /// public static MqttClientOptionsBuilder WithSocks5Proxy(this MqttClientOptionsBuilder builder, Socks5ProxyOptions options) { ArgumentNullException.ThrowIfNull(builder); ArgumentNullException.ThrowIfNull(options); return builder.WithStreamProvider(new Socks5StreamProvider(options)); } /// /// Configures the client to tunnel its TCP connection to the broker through a SOCKS5 /// proxy using the fluent . /// public static MqttClientOptionsBuilder WithSocks5Proxy(this MqttClientOptionsBuilder builder, Action configure) { ArgumentNullException.ThrowIfNull(builder); ArgumentNullException.ThrowIfNull(configure); var optionsBuilder = new Socks5ProxyOptionsBuilder(); configure(optionsBuilder); return WithSocks5Proxy(builder, optionsBuilder.Build()); } }