public IMqttClientOptions Build() { if (_tcpOptions == null && _webSocketOptions == null) { throw new InvalidOperationException("A channel must be set."); } if (_tlsParameters != null) { if (_tlsParameters?.UseTls == true) { var tlsOptions = new MqttClientTlsOptions { UseTls = true, SslProtocol = _tlsParameters.SslProtocol, AllowUntrustedCertificates = _tlsParameters.AllowUntrustedCertificates, #if WINDOWS_UWP Certificates = _tlsParameters.Certificates?.Select(c => c.ToArray()).ToList(), #else Certificates = _tlsParameters.Certificates?.ToList(), #endif #pragma warning disable CS0618 // Type or member is obsolete CertificateValidationCallback = _tlsParameters.CertificateValidationCallback, #pragma warning restore CS0618 // Type or member is obsolete #if NETCOREAPP3_1 ApplicationProtocols = _tlsParameters.ApplicationProtocols, #endif CertificateValidationHandler = _tlsParameters.CertificateValidationHandler, IgnoreCertificateChainErrors = _tlsParameters.IgnoreCertificateChainErrors, IgnoreCertificateRevocationErrors = _tlsParameters.IgnoreCertificateRevocationErrors }; if (_tcpOptions != null) { _tcpOptions.TlsOptions = tlsOptions; } else if (_webSocketOptions != null) { _webSocketOptions.TlsOptions = tlsOptions; } } } if (_proxyOptions != null) { if (_webSocketOptions == null) { throw new InvalidOperationException("Proxies are only supported for WebSocket connections."); } _webSocketOptions.ProxyOptions = _proxyOptions; } _options.ChannelOptions = (IMqttClientChannelOptions)_tcpOptions ?? _webSocketOptions; return(_options); }
public IMqttClientOptions Build() { if (_tcpOptions == null && _webSocketOptions == null) { throw new InvalidOperationException("A channel must be set."); } if (_tlsParameters != null) { if (_tlsParameters?.UseTls == true) { var tlsOptions = new MqttClientTlsOptions { UseTls = true, SslProtocol = _tlsParameters.SslProtocol, AllowUntrustedCertificates = _tlsParameters.AllowUntrustedCertificates, Certificates = _tlsParameters.Certificates?.Select(c => c.ToArray()).ToList(), CertificateValidationCallback = _tlsParameters.CertificateValidationCallback, IgnoreCertificateChainErrors = _tlsParameters.IgnoreCertificateChainErrors, IgnoreCertificateRevocationErrors = _tlsParameters.IgnoreCertificateRevocationErrors }; if (_tcpOptions != null) { _tcpOptions.TlsOptions = tlsOptions; } else if (_webSocketOptions != null) { _webSocketOptions.TlsOptions = tlsOptions; } } } if (_proxyOptions != null) { if (_webSocketOptions == null) { throw new InvalidOperationException("Proxies are only supported for WebSocket connections."); } _webSocketOptions.ProxyOptions = _proxyOptions; } _options.ChannelOptions = (IMqttClientChannelOptions)_tcpOptions ?? _webSocketOptions; return(_options); }