| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using System;
- using System.Linq;
- using MQTTnet.Client.Options;
- namespace MQTTnet.Extensions
- {
- public static class MqttClientOptionsBuilderExtension
- {
- public static MqttClientOptionsBuilder WithConnectionUri(this MqttClientOptionsBuilder builder, Uri uri)
- {
- var port = uri.IsDefaultPort ? null : (int?) uri.Port;
- switch (uri.Scheme.ToLower())
- {
- case "tcp":
- case "mqtt":
- builder.WithTcpServer(uri.Host, port);
- break;
- case "mqtts":
- builder.WithTcpServer(uri.Host, port).WithTls();
- break;
- case "ws":
- case "wss":
- builder.WithWebSocketServer(uri.ToString());
- break;
- default:
- throw new ArgumentException("Unexpected scheme in uri.");
- }
-
- if (!string.IsNullOrEmpty(uri.UserInfo))
- {
- var userInfo = uri.UserInfo.Split(':');
- var username = userInfo[0];
- var password = userInfo.Length > 1 ? userInfo[1] : "";
- builder.WithCredentials(username, password);
- }
- return builder;
- }
- public static MqttClientOptionsBuilder WithConnectionUri(this MqttClientOptionsBuilder builder, string uri)
- {
- return WithConnectionUri(builder, new Uri(uri, UriKind.Absolute));
- }
- }
- }
|