mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-17 01:33:03 +08:00
49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|